2009-06-22 60 views
0

我有一个包含图像的MovieClip。 图像可以在MC内部拖动。 MC有一个蒙版,让我们说一个圆形,所以并非所有的图像始终可见,取决于您拖动图像的位置。实时复制MovieClip

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

任何人都知道如何做到这一点?

回答

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

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

为此,我会在开始拖动图像时使用MouseEvent.MOUSE_MOVE事件(因此您的MouseEvent.MOUSE_DOWN的侦听器将为MOUSE_MOVE添加一个新的侦听器)。然后,您可以在用户停止拖动图像时移除MOUSE_MOVE侦听器。

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

我会尽力为之后的一些代码挖掘一些代码,但这应该足以让你开始。

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