MovieClip的实时复制

时间:2009-06-22 17:46:02

标签: flash actionscript-3

我有一个包含图片的MovieClip。 图像可以在MC内部拖动。 MC有一个面具,比如圆形,所以并非所有图像都是可见的,取决于你拖动图像的位置。

我需要的是将此MC的实时副本作为较小的缩略图。当我在MC中拖动图像时,应该实时更新重复的缩略图MC。

任何人都知道怎么做?

2 个答案:

答案 0 :(得分:1)

一个简单的方法是首先设置一个监听器,这样每当移动图像时,它都会触发缩略图版本更新。

为此,当您开始拖动图像时,我只会点击MouseEvent.MOUSE_MOVE事件(因此,MouseEvent.MOUSE_DOWN的监听器将为MOUSE_MOVE添加新的监听器)。然后,当用户停止拖动图像时,您可以删除MOUSE_MOVE侦听器。

对于缩略图本身,您可以使用从BitmapData对象提供的Bitmap对象,该对象本身通过它的draw方法捕获蒙版图像(它也可以根据需要调整大小)。

我稍后会尝试为此挖掘一些代码,但这应该足以让你开始。

另一种方法是创建蒙版图像的整个副本,缩小它,并使其更新大版本的MOUSE_MOVE事件上缩略图的位置。

答案 1 :(得分:1)

+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;
    }
}