我有一个包含图像的MovieClip。 图像可以在MC内部拖动。 MC有一个蒙版,让我们说一个圆形,所以并非所有的图像始终可见,取决于您拖动图像的位置。实时复制MovieClip
我需要的是这个MC的实时副本作为一个更小的缩略图。当我在MC中拖动图像时,应该实时更新重复缩略图MC。
任何人都知道如何做到这一点?
我有一个包含图像的MovieClip。 图像可以在MC内部拖动。 MC有一个蒙版,让我们说一个圆形,所以并非所有的图像始终可见,取决于您拖动图像的位置。实时复制MovieClip
我需要的是这个MC的实时副本作为一个更小的缩略图。当我在MC中拖动图像时,应该实时更新重复缩略图MC。
任何人都知道如何做到这一点?
+1给Branden的回答。例如:
public static const SCALE : Number = 0.5; // thumbnail scale
private var thumb : Bitmap;
private var maskedClip : MovieClip = ...;
//...
maskedClip.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
//...
private function mouseMoveHandler(event:MouseEvent):void {
var snapshot:BitmapData - new BitmapData(maskedClip.width * SCALE, maskedClip.height * SCALE, true, 0x00000000);
var scaleMatrix:Matrix = new Matrix();
scaleMatrix.scale(SCALE, SCALE);
snapshot.draw(maskedClip, scaleMatrix);
if (!thumb) {
thumb = new Bitmap(snapshot);
addChild(thumb);
} else {
thumb.bitmapData = snapshot;
}
}
一个简单的方法是首先设置一个侦听器,以便每当图像被移动时它都会触发缩略图版本更新。
为此,我会在开始拖动图像时使用MouseEvent.MOUSE_MOVE事件(因此您的MouseEvent.MOUSE_DOWN的侦听器将为MOUSE_MOVE添加一个新的侦听器)。然后,您可以在用户停止拖动图像时移除MOUSE_MOVE侦听器。
至于缩略图本身,您可以使用BitmapData对象提供的Bitmap对象,该对象本身通过它的绘制方法(它也可以根据需要调整它的大小)捕获蒙版图像。
我会尽力为之后的一些代码挖掘一些代码,但这应该足以让你开始。
另一种方法是创建蒙版图像的整个副本,缩小它,并使其在大版本的MOUSE_MOVE事件上更新缩略图的位置。