有没有办法从mc中复制像素,mc中有移动部件(就像一个从mc的一个角移动到另一个角并且无限重复的圆圈),每隔一秒复制到另一个mc。
然而,它不仅仅是复制它们,它必须是处理器/性能友好的,因为我确实找到了这样做的方法,但它有很多。
我的方式是:
public class Main extends MovieClip
{
private var myRainbow:Rainbow = new Rainbow();
private var mySprite:Sprite = new Sprite();
private var bmd:BitmapData;
private var countainer:Sprite = new Sprite();
private var bm:Bitmap = new Bitmap();
public function Main()
{
this.addChild( mySprite );
mySprite.addChild( myRainbow );
mySprite.x = stage.stageWidth * 0.5 - myRainbow.width * 0.5;
mySprite.y = stage.stageHeight * 0.5 - myRainbow.height * 0.5;
bmd = new BitmapData( 50, 50 );
bm.x = 0;
bm.y = 0
countainer.addChild( bm );
addChild( countainer )
countainer.x = 100
countainer.y = 100
countainer.addEventListener(MouseEvent.MOUSE_DOWN, onClick)
this.addEventListener(Event.ENTER_FRAME, onFrame);
this.addEventListener(MouseEvent.MOUSE_UP, drop);
}
private function onFrame( event:Event )
{
bmd.draw( mySprite, new Matrix( 1, 0, 0, 1, 0, 0 ), null, null, new Rectangle( 0, 0, 50, 50 ) );
bm.bitmapData = bmd;
}
//dont mind the other methods.
}
类 Rainbow()实际上是包含移动元素的mc。
但是,当我在平板电脑上测试此代码时,其中4-5个元素从 Rainbow()(或在具有10-20个元素的PC上)复制不同的像素,它开始滞后。当然,每帧都是复制像素,但却无法找到另一种解决方案。
还有其他方法吗?我愿意接受任何建议。希望你遇到过这个问题。
PS:1:你可以看到我在这个链接上做了什么:Moving elements
PS:2:主MC(在我的情况下是Rainbow)将超过400x300尺寸,那些4-5个元素将显示主mc的不同部分,但将显示所有区域(我的意思是那个第一个mc将跟踪X维度从0到100的区域,从100到200的第二个,从200到300的第三个,从300到最后的第四个跟踪区域,并且它们将具有主MC的高度 - >在此案例300)
答案 0 :(得分:1)
copyPixels
在位图上非常快。您的问题是您每帧都在更改位图,如果在多个对象上完成,则不仅意味着您绘制源,而且每帧都会创建新的位图。
尝试复制像素,并确保使用目标,这将直接将位图放在正确的位置。
您还可以尝试在绘制之前锁定位图,这也会提高性能。