■プロフィール

クリエイトウェーブスタッフ

Author:クリエイトウェーブスタッフ
開発における、諸々を書いていきたいなと思っています。

■最近の記事
■カテゴリー
■twitter

■QRコード

QR

■最近のコメント
■月別アーカイブ
■最近のトラックバック
■ブロとも申請フォーム
■twitter_follow

■ブログ内検索

■RSSフィード
■リンク
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


カテゴリー:スポンサー広告 |
リンケージ設定した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)
次のページ

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。