2010-08-16

Alternativa3d小计:MovieClip材质或者vedio材质原理

其实就是重写texture中的draw函数,使其每隔一段时间用bitmapdata draw一遍movieclip或者vedio

package {
import flash.display.BitmapData;
import flash.events.TimerEvent;
import flash.utils.Timer;
import alternativa.types.Texture;
public class MovieClipTexture extends Texture {
private var clipref:DisplayObject
public function MovieClipTexture (clip:DisplayObject) {
super (new BitmapData (clip.width, clip.height); clipref = clip;
var t:Timer = new Timer (100); t.addEventListener(TimerEvent.TIMER, drawClip); t.start();
}
private function drawClip (e:TimerEvent):void {
bitmapData.draw (clipref);
}
}
}
...
plane.setMaterialToAllSurfaces(new TextureMaterial(new MovieCLipTexture (myClip)));

1 条评论

  • @Alternativa 3D 7.6.0

    your_mesh.setMaterialToAllFaces( new TextureMaterial(new MovieClipTexture(your_mc,100)) );

    package {

    import flash.display.BitmapData;
    import flash.display.DisplayObject;
    import flash.events.TimerEvent;
    import flash.utils.Timer;

    public class MovieClipTexture extends BitmapData {

    private var clipref:DisplayObject;
    private var t:Timer;

    public function MovieClipTexture (clip:DisplayObject, times:int=100) {

    super(clip.width, clip.height);
    clipref = clip;

    t = new Timer (times);
    t.addEventListener(TimerEvent.TIMER, drawClip);
    t.start();
    }

    private function drawClip (e:TimerEvent):void {
    super.draw (clipref);
    }

    }
    }

说点啥吧