2011-07-03 61 views
0

在下面的代碼中,如果我點擊'按鈕',所有三個函數都會被調用。 但是在其他所有情況下,只有階段性事件纔會被解僱。 爲什麼'精靈'事件沒有被解僱?事件監聽器/事件流程的奇怪行爲

public class EventFlowTest extends Sprite 
{ 
    private var button:Sprite; 

    public function EventFlowTest() 
    { 
     addEventListener(Event.ADDED_TO_STAGE, init); 

    } 
    private function init(e:Event = null):void 
    { 
     stage.addEventListener(MouseEvent.MOUSE_DOWN,stageMouseDown,false); 


     graphics.beginFill(0x11); 
     graphics.drawCircle(100,100,100); 
     addEventListener(MouseEvent.MOUSE_DOWN,spriteMouseDown,false);   


     button=new Sprite(); 
     addChild(button); 

     button.graphics.beginFill(0xF1); 
     button.graphics.drawCircle(100,100,10); 
     button.addEventListener(MouseEvent.MOUSE_DOWN,buttonMouseDown,false); 
    } 

    private function spriteMouseDown(e:MouseEvent):void 
    { 
     trace("sprite"); 
    } 

    private function stageMouseDown(e:MouseEvent):void 
    { 
     trace("stage"); 
    } 

    private function buttonMouseDown(e:MouseEvent):void 
    { 
     trace("button"); 
    } 

} 

回答

1
+0

如果該鏈接沒有顯示出來爲別人,這是「用矢量內容鼠標交互通過實例繪製.swf文件主類的變量'graphics'不會觸發鼠標事件,但是,鼠標與通過實例變量'graphics'或任何其他InteractiveObject實例繪製的矢量內容的交互或它的子類確實會觸發鼠標事件「 – divillysausages

0

這很奇怪......當您的測試類是文檔類時會發生此行爲。 如果將測試嵌入到文檔類中,則每個事物都按預期運行。我沒有解釋這種行爲。

package { 
    import flash.display.Sprite; 

    public class Main extends Sprite { 
     public function Main() { 
      var test : EventFlowTest = new EventFlowTest(); 
      addChild(test); 
     } 
    } 
}