0

カスタム クラスでイベント リスナーを作成しようとしています。これは本で見たことがありますが、「MouseDown の未定義プロパティへのアクセス」というエラーが表示されます。私は問題を可能な限り抽象化しようとしました。クラスを呼び出すために使用しているコマンドを以下に示します。洞察をありがとう。

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");        
    }                   

}   

}

//フラットなコード

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

2 に答える 2

1

コードにタイプミスがあります。ハンドラーの名前 ( OnMouseDown()) は大文字で始まりますが、イベント リスナーはonMouseDown小文字で追加します。関数の名前を に変更すると、機能するonMouseDownはずです。

于 2013-02-13T21:17:07.277 に答える
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");        
    }                   

}   

}
于 2013-02-14T22:19:18.110 に答える