2013-02-13 39 views
0

我想在自定義類中創建一個事件監聽器。我在書中看到了這個,但是我得到錯誤「在MouseDown上訪問未定義的屬性」。我試圖儘可能地抽象出這個問題。下面提供了我用來調用我的類的命令。感謝您的任何見解。在FLAas3畫圈類錯誤

var mouseDraw:MouseDraw= new MouseDraw(); 
addChild(mouseDraw); 

回答

1

package 
{ 
import flash.display.*;; 
import flash.events.*;; 

public class MouseDraw extends Sprite { 

    public function MouseDraw() { 
     addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);   
     } 


    public function OnMouseDown(event:MouseEvent):void { 
     trace("mouse down");   
    }     

} 

} 

//代碼。在你的代碼一個錯字:你的處理器(OnMouseDown())的名稱以大寫字母,但你onMouseDown與添加事件偵聽器小寫。將你的函數重命名爲onMouseDown,它應該可以工作。

+0

謝謝查爾斯 - 我在發佈之後發現了這個問題。但現在我得到新的錯誤「TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法。」有什麼想法嗎。謝謝 – user2066788 2013-02-13 21:36:39

+0

@ user2066788你會在哪一行得到這個錯誤?它是在哪裏調用'addChild()'?這是'DisplayObjectContainer'的一種方法,我們不知道你稱之爲哪個對象。在你的例子中,它是'this.addChild(mouseDraw)'(如果你沒有定義一個方法被調用,默認情況下它是'this'),但是'this'是什麼?你嘗試過'stage.addChild(mouseDraw)'嗎? – 2013-02-13 22:06:10

+0

hi @ user2066788I,試過stage.addChild(mouseDraw),我得到了同樣的錯誤。謝謝 – user2066788 2013-02-13 22:14:22

0

哇 - 瘋狂谷歌搜索後得到這個工作。感謝所有評論的人。故事的道德 - 不相信你在書中看到的代碼將編譯!

package 
{ 
import flash.display.*;; 
import flash.events.*;; 

public class MouseDraw extends Sprite { 

    public function MouseDraw() { 

     graphics.lineStyle(1); 

     addEventListener(Event.ADDED_TO_STAGE, init);      
     } 


    private function init(e:Event):void { 
     stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);      
    } 

    private function onMouseDown(event:MouseEvent):void { 
     trace("mouse down");   
    }     

} 

}