我有一个 MovieClip,里面有图像,我可以拖动、调整大小和旋转。
我正在创建一个小缩略图,以便用户可以看到它的外观。这本质上是主 MovieClip 的小版本。
如何将 MovieClip 克隆为较小的 MovieClip,以便当我在主 MovieClip 中拖动、旋转或调整图像大小时,小 MovieClip 将随着更改进行更新。
我尝试过BitmapData draw(),但是太慢了。
还有其他解决办法吗?
更新
这是我当前使用的代码:
import flash.display.Bitmap;
import flash.display.BitmapData;
function createThumbnail() {
var bmd:BitmapData = new BitmapData(mcBig.width, mcBig.height, false, 0xFFBC1C);
bmd.draw(mcBig);
var b:Bitmap = new Bitmap(bmd);
b.smoothing = true;
b.scaleX = 0.2;
b.scaleY = b.scaleX;
mcSmall.addChild(b);
}
每次拖动、调整大小、旋转时都会调用 createThumbnail 函数。
如果有人有更好/更快的方法,请告诉我;)
最佳答案
BitmapData 绘制速度非常快。您应该尝试修改 createThumbnail 以重用位图并重新绘制到其中。对象实例化非常受欢迎,因此如果您在每一帧上创建新的 BitmapData 和 Bitmap,这可能就是问题的根源。
import flash.display.Bitmap;
import flash.display.BitmapData;
private var _myThumb:Bitmap; // you'll probably want to have one of these for each mcSmall instance, instead of a class-level variable - this is just here for sample reference
private var _myThumbData:BitmapData;
function createThumb() {
_myThumbData = new BitmapData(mcBig.width, mcBig.height, false, 0xFFBC1C);
_myThumb = new Bitmap(_myThumbData);
_myThumb.smoothing = true;
_myThumb.scaleX = _myThumb.scaleY = 0.2
mySmall.addChild(_myThumb);
}
createThumb(); // call this just once per thumbnail
function createThumbnail() { //call this every draw frame
_myThumbData.draw(mcBig);
}
关于flash - 实时克隆影片剪辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1071097/