2017-11-11 7 views
-1

私のFLAファイルにシンボル(MovieClip)を作成し、フレームに追加しました。それから私は、プロパティパネルで、インスタンス名を与える:「myMC」 ステージのMovieClipをAS3クラスファイルから制御できません

はその後のディレクトリに私のクラスファイルからそれを制御しようとした:ルート\テスト\ MyClass.asその後
package Test { 
    import flash.display.MovieClip; 

    public class MyClass extends MovieClip{ 
     public function MyClass() { 
      var myMC:MovieClip = getChildByName("myMC") as MovieClip; 
      myMC.gotoAndStop(2); 
     } 
    } 
} 

にクラスをインポート実行しようとしたFLAと:私はCONTにしようとしている

import Test.MyClass; 
var LaunchMyClass:MyClass = new MyClass(); 

と、このエラーを取得し、

TypeError: Error #1009: Cannot access a property or method of a null object reference. 

at Test::MyClass() 
at Test_fla::MainTimeline/frame1() 

注意をライブラリからMovieClipを呼び出すのではなく、既にステージに入っているMovieClip。

答えて

2

まず、あなたの質問で得たErrormessagesを必ず投稿してください。物事を楽にします。

しかし、今のあなたのスクリプトを見てみましょう:

私は私のFLAファイル内のシンボル(ムービークリップ)を作成し、 フレームにこれを追加しました。あなたは、ステージの上に置くとはaddChildを呼び出す必要はありませんMovieClipのINSTANCENAMEを与えた場合、私は addChild(myMC);

使用して、子として追加します。

as3では、大文字でクラス名を開始するのが便利なので、myClassの代わりにMyClassと呼んでください。

パッケージにコンストラクタ関数がありません。関数の名前は、クラス名と.asファイル名と同じ名前でなければなりません。

getChildByName()方法は、あなたが引用符

package { 
    import flash.display.MovieClip; 


    public class MyClass extends MovieClip { 

     // Constructor 
     public function MyClass() { 
      // constructor code 
      var myMC:MovieClip = getChildByName("myMC") as MovieClip; 
      myMC.gotoAndStop(2); 
     } 
     // End Constructor 
    } 

} 
+0

myMcをラップする必要がありますので、私はあなたの言うことを試み、それは別の問題が出て、文字列を期待しています。詳しい情報は投稿を編集しました。 – theRaggedyMan

+0

まあまあ、私はあなたのフラのドキュメントクラスとしてMyClass.asを使用すると思った。あなたが達成しようとしていることとMyClassの目的は何ですか? @theRaggedyMan – Patang

+0

私はMyClassを使ってシーンのムービークリップをコントロールしようとしています。私は多くのムービークリップinitを持つ複雑なゲームを持っています。私はFLAファイルからそれらを制御するために使用されたが、コードは混乱してしまったので、クラスを使用してコードを分離したい。 – theRaggedyMan

関連する問題