fc2ブログ
 
■プロフィール

クリエイトウェーブ

Author:クリエイトウェーブ
開発における、諸々を書いていきたいなと思っています。
mail : info@createwave.jp

■最近の記事
■カテゴリー
■最近のコメント
■月別アーカイブ

■最近のトラックバック
■ブログ内検索

■RSSフィード
■リンク
リンケージ設定したMCから自分自身のインスタンスへのアクセス
Pです。

リンケージ設定をしたMCのクラスから、自分自身に配置したMCインスタンスなどに
アクセスできないことが、たまに起こったりします。
null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
というやつです。
もちろん原因は必ずありますが、中々気付かないものです。。。

(1)新規MCを作り、ダイナミックテキスト(インスタンス名:_txt)を配置
(2)このMCにリンケージ設定(クラス:TextContainer)
(3)TextContainer.as
package {
   import flash.display.MovieClip;
   public class TextContainer extends MovieClip {
     public function TextContainer() {
      trace(_txt) //出力:null;
      super();
     }
   }
}

一見これで[object TextField]が出力されそうな気がしますが、Error #1009が出ます。
これだけ単純なコードならすぐ気付くと思いますが、原因はsuper()を書く位置にあり
super();
trace(_txt);
というコードなら問題なく動作します。

このsuper()は省略しても問題ないのですが、その場合は暗黙的にコンストラクタの最初に実行されます。
恐らくsuper()が実行されるまでは、一人前のMovieClipとして認めてもらえないんじゃないかと理解することにしました。

※おまけ
パブリッシュ設定>設定...>ステージのインスタンスを自動宣言
にもチェックをつける必要があります。
デフォルトでチェックはついているはずですが、見落としがちなので注意!

カテゴリー:Flash | TM(0) | CM(0)
次のページ