• 05 «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • » 07
ASOK?
ActionScriptでFlashつくるよ
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
page top

何回か試みてはうまくいかずに放置してたんで、改めて検証。
例としてボタンを作る場合を想定。

実験

その1

  • FlashIDE上でボタン内で使用するパーツ(ムービークリップ)をリンケージ設定
  • ボタン用クラスでパーツをインスタンス生成。

⇒問題ない

その2

  • FlashIDEでボタン用のムービークリップシンボルを作る
  • ボタン用クラスを作りリンケージ設定
  • ボタン内のパーツはタイムラインに配置し、インスタンス名を指定
  • ボタン内パーツMCにはリンケージ設定なし

⇒ボタン用クラスからタイムラインに配置したパーツは参照できない。
null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
当然のことながら、FlashDeveopでswcの中をのぞいても、パーツMCは含まれていない。

その3

  • 上記2のボタン内のパーツMCに、リンケージ設定する
  • それ以外は、上記2と同じ

⇒やっぱりボタン用クラスから、タイムラインに配置したパーツを参照できない。
ただしswcの中には、パーツMCは含まれている。

その4

  • 上記3のボタンからクラス指定をはずし、リンケージ設定のみにする。

⇒インスタンス生成すると、タイムラインに配置したパーツを参照できる!

その5

  • 上記4の状態から、各パーツのリンケージ設定を外す(つまり上記2からクラス指定を外した状態)

⇒やっぱりタイムラインに配置したパーツを参照できる!

まとめ

  • シンボルに独自のクラスを適用した場合、タイムラインに配置したシンボルは無視されてしまうようだ
  • ボタンとして使うことを想定した場合、ボタン用シンボルは不要で、ボタン用パーツにリンケージ設定しておけばよい。

なぜそうなるか考えた

リンケージ設定があるが、そのクラスファイルが見つからない場合、Flashがクラスファイルを内部的に生成してるらしい。で、たぶん、その生成されるクラスファイルには、タイムラインに配置したパーツのインスタンス生成コードが、自動で入ってるんじゃなかろうか。

⇒あ、でも、それだとリンケージ設定しなくても(上記5の場合)パーツが参照できる理由がわからないな…

⇒⇒ってことで、タイムライン配置したインスタンスがどう処理されているのかよくわかりません。

関連記事
page top

コメント

管理者にだけ表示を許可する
 

トラックバック
TB*URL
Copyright © 2005 ASOK?. all rights reserved.

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