2011-12-29 3 views
2

私は状況を簡単に説明する方法がないので、詳細に説明します。クラスを拡張した後のAS3エラー1120

MovieClipから拡張されたクラスを作成しました。

ここで、dragArea_mcは、これを基本クラスとして使用するMovieClipsで定義されています(または定義する必要があります)。

私は、dragArea_mcとclose_mcという名前の2つの子MovieClipsを持つMovieClipを作成し、その基底クラスを上に設定しました。それは正常に働いた。全く問題なし。

異なるウィンドウは異なる動作をするため、私はWindowObjectに基づいていくつかのクラスを作成したかったのです。 (つまり、WindowObjectを拡張し、追加の機能を持っています)。

手順2で作成したMovieClipの基本クラスを新しいクラスに変更しました。今、ここに問題があります:

1120: Access of undefined property dragArea_mc. 
    1120: Access of undefined property close_mc. 

私がエラーをクリックすると、私はWindowObjectクラスにリダイレクトされました。

新しいクラスを作成せず、MovieClipに直接追加機能を書き込んで、基本クラスをWindowObjectに戻しても、うまく機能します。それは、ステージ上ではないので、それが不定になることがあり

+0

クラスを 'public dynamic class'として定義しようとします –

+0

すばやく応答してくれてありがとう。私は 'public class WindowObject'を 'public dynamic class WindowObject'に変更しようとしましたが、それでも同じエラーがあります。 –

+0

さらに、私は新しいクラスに 'dynamic'を追加しました。問題を解決できません。 –

答えて

0

さて、私はちょうど解雇フラッシュCS5のようにそれをyet..try、そしてあなたの問題を再現しました。そして、私は少し困惑していることを認めなければなりません...そして、私はもう何を調査しなければなりません。何が起こっているのか本当に分かりません。

public dynamic class...

に両方のクラスを設定してみてください、その後、代わりに直接dragArea_mcを参照するの、私がなってしまったものをthis.dragArea_mc

を通じて参照:

UIで
public dynamic class TestParent extends MovieClip { 
    public function TestParent() { 
     // trace(drag_mc); doesn't work 
     trace(this.drag_mc); // works as long as the class is dynamic 
    } 
} 

public dynamic class TestChild extends TestParent { 
    public function TestChild() { 
     // trace(drag_mc); surprisingly does work, but odd it doesn't work in the parent. 
     trace(this.drag_mc); // works as long as the class (and its parent) are dynamic 
    } 
} 

そして、作成しました新しいMovieClipを作成し、基底クラスをTestChildに設定し、インスタンス名がdrag_meの子ムービークリップを作成しました。

...私は詳細を調査し、後でこの記事を編集しますが、それを試して問題が解決するかどうかを確認します。

+0

助けてくれてありがとう!ですから、私が必要とするのは、「ダイナミック」と「これ」を加えることです。今はうまくいく。乾杯! –

+0

「これを使用しないように言われたのは面白いです。パフォーマンスに影響する可能性があるため可能な場合しかし、今回は、 "これ"必要です。オルズ –

-1

はかなりこの

// Libraries are imported 

class WindowObject extends MovieClip { 
    public function WindowObject():void { 
     addEventListener(Event.ADDED_TO_STAGE, init); 
    } 

    private function init(e:Event):void 
    { 
     removeEventListener(Event.ADDED_TO_STAGE, init); 
     dragArea_mc.addEventListener(...); 
    } 

    public function AFunction():void { 
     if(close_mc == null) { 
      // Do something 
     } 
    } 
} 
+0

クイックレスポンスを考えます。しかし、close_mcは定義されていないとも言われているので、問題ではないと私は思う。 –

+0

@Ronnie DisplayObjectインスタンスは、ステージ上に存在する必要はありません。 – Marty

関連する問題