2010-02-15 170 views
0

我想在movieclip對象上實現下面的控件。當鼠標指針位於對象上時,如果單擊鼠標左鍵並保持單擊狀態,則重疊動畫片段對象的遮罩開始消失。我嘗試了MouseEvent.DOWN等,但我沒有成功實現此功能。可能我想念一些東西。我可以通過標準的鼠標事件類型來實現嗎?還是我需要以另一種方式來實現? 也有可能通過減少alpha屬性來淡出蒙版,實際上使鼠標指針下的像素消失?Actionscript鼠標事件問題

回答

0

MouseEvent.MOUSE_DOWN/Mouse.MOUSE_UP確實是要使用的事件,所以在代碼中存在大多數問題。

它經常發生這個事件不會被觸發,因爲對象重疊,我懷疑在這種情況下,它可能是面具。如果是這種情況,您可以簡單地使用mouseEnabled = false禁用障礙displayObject上的mouseEvents。

例子:

var background:Sprite, 
    foreground:Sprite; // Note: could be MovieClips of course ! 

// adds a sprite with a pink circle 
addChild(background = new Sprite()); 
background.graphics.beginFill(0xff0099); 
background.graphics.drawEllipse(0,0,100,100); 

// adds a sprite containing a black box and adds it on top of the circle 
addChild(foreground = new Sprite()); 
foreground.graphics.beginFill(0x000000); 
foreground.graphics.drawRect(0,0,100,100); 

background.buttonMode = true; // not necessary, just adds the handcursor on rollover to let you debug easier. 
foreground.mouseEnabled = false; // the foreground is not clickable anymore, which makes the background clickable 


background.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); 

function onMouseUp(e:Event):void 
{ 
    foreground.visible = 0; // I let you do the animation here ;) 
} 

一些關於光標下的像素快速提示:

您可以用Bitmap對象做到這一點。 可以使用mouseX,mouseY檢索像素座標(請注意,位圖對象不會派發鼠標事件,因此您需要將其添加到Sprite以用作包裝)。 您可以通過getPixel32檢索像素實際顏色/ alpha並將其修改爲setPixel32

如果您有麻煩,我建議您爲此打開一個單獨的問題。

希望它能幫助, T.

+0

感謝西奧其實我達到我想要通過使用正確的MOUSE_DOWN,MOUSE_UP,和MOUSE_MOVE事件的影響。實際上,我爲每個MOUSE_DOWN,MOUSE_UP註冊了兩個單獨的事件。在MOUSE_UP中,我包含一個object.removeEventListener(MOUSE_MOVE,mousedown),在MOUSE_DOWN中包含一個object.addEventListener(MOUSE_MOVE,mousedown)加上我想要的動作。 – Ponty 2010-02-15 16:24:14