是否有一种方法可以将像素从包含移动部分的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.
}其中,类彩虹()实际上是包含移动元素的mc。
但是,当我在平板电脑上测试这段代码时,它会开始滞后。平板电脑有4-5个元素,可以复制来自彩虹()的不同像素(或者在有10-20个元素的PC上)。当然,它是每帧像素的复制,但却找不到另一个解决方案。
还有别的办法吗?我愿意听取任何建议。希望你遇到了这个问题。
PS: 1:你可以在这个链接上看到我在做什么:运动元件
PS: 2:主mc (在我的例子中是彩虹)将超过400x300维,这4-5元素将显示主mc的不同部分,但将显示所有区域(我的意思是,第1 MC将跟踪面积从X维从0到100,第2从100到200,第3从200到300,第4从300到最末端,在这种情况下它们将具有主MC ->的高度)。
发布于 2014-05-17 18:29:06
这是您的解决方案:US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#copyPixels()
copyPixels在位图上速度非常快。您的问题是,您正在更改每个帧的位图,如果在多个对象上这样做,意味着不仅要绘制源,而且还要创建每个帧的新位图。
尝试复制像素,并确保您使用目标,这将直接将位图放在正确的地方。
还可以尝试在绘图前锁定位图,这也将提高性能。
https://stackoverflow.com/questions/23714178
复制相似问题