2012-01-11 28 views
0

ActionScript 3には少し問題があります。私はここでいくつかの助けを求めてきました。あるクラスから別のクラスに関数を呼び出す

私は2つのクラスを持っています。 1つはSledgeと呼ばれ、もう1つはSockと呼ばれ、Mainというドキュメントクラスもあります。次のように

私の問題は、次のとおりです。Sledgeの内部

  • を、私はMainドキュメントクラスの内部で定義された関数を呼び出します。クラスにドキュメントクラスに行き、その関数を実行するように教えてもらえますか?これは他のクラスやドキュメントクラスでも同じですか? Sledgeインサイド

  • 、私は、次のステートメントを持っている:if(hitTestObject(sock.myHitArea)) { /* somecode*/ }

    sockは別の独立したクラスのインスタンスであり、この時点ですでに作成されています。しかし、これを試して実行すると、定義されていないと言われます。これを解決するにはどうすればいいですか?

答えて

1

質問の表現方法には多少の曖昧さがあります。あなたが問題のコードの短い形式を投稿した場合、それは役に立ちます。

しかし、私は最初の質問にお答えしてみましょう:スレッジの内部

を、私は、メインドキュメントクラスの内部で定義された関数を呼び出します。クラスにドキュメントクラスに行き、その関数を実行するように教えてもらえますか?

メインクラスをSledgeクラスに渡すか、望ましいイベントを使用します。クラスを渡すと、それは

class Sledge { 
    private var main:Main; 
    function Sledge(main:Main) { 
     this.main = main; 
    } 
    function doSomething():void { 
    main.runSomeFunction(); 
    } 
} 

場合や、イベントを使用して...次のようになります。

class Main { 
private var sledge:Sledge; 
    function Main() { 
     sledge = new Sledge(); 
     sledge.addEventListener("mainDoSomething", doSomething); 
    } 
    private function doSomething(e:Event):void { 
    // .... do stuff 
    } 
} 
class Sledge extends EventDispacter { 
    function Sledge() { 
    } 
    public function doSomething():void { 
    dispatchEvent(new Event("mainDoSomething")); 
    } 
} 
関連する問題