メイン コーダーズルーム【スクリプト系】 型のキャスト | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ペコ | Åê¹ÆNo.34626 投稿日時: 2007-8-10 21:29 |
新米 居住地: 埼玉一歩手前 投稿: 19
使用環境:
WinXP,Flash MX2004pro Flashout,ASDT,MTASC,Eclipse PDT |
型のキャスト 子のクラスを親の型にキャストしていますが、
null となってしまいます。 Abstract.as
Child.as
1)ムービークリップインスタンス AS2クラス:Abstract リンケージ:abstract 2)ムービークリップインスタンス AS2クラス:Child リンケージ:child 二つムービークリップシンボルをつくり 1)を_root.abstractとして配置。 _rootフレームアクション
出力の期待は _root.abstract.child0 なんですが、nullと出力されます。 キャストどのようにすればよいのでしょうか? あ、今手元にあった、Flash8で試してみましたが 正常に出力されました・・・・・。 Flash MX 2004で現象がでています。 |
ニノミヤ カズノリ | Åê¹ÆNo.34636 投稿日時: 2007-8-12 14:16 |
職人 居住地: 東京 投稿: 430
使用環境:
CS4 .4.11, .5.7 XP Pro(sp3) Flash Player 10,0,22,87, AIR 1.5.1, IE 5.5 & 6 & 7 & 8, Firefox 2.0.0.20 & 3.0.11 & 3.5, Opera 9.64, Safari 4, Google Chrome 2.0.172.31, Netscape 7.1 |
Re: 型のキャスト こちらでもFlash MX 2004にて試してみましたが、ペコさんの期待通りの結果(_root.abstract.child0)が返ってきました。
ソースコードやasファイルの位置、シンボルの設定がおかしくないかもう一度調べてみてはいかがでしょうか。 |
ペコ | Åê¹ÆNo.34658 投稿日時: 2007-8-13 21:24 |
新米 居住地: 埼玉一歩手前 投稿: 19
使用環境:
WinXP,Flash MX2004pro Flashout,ASDT,MTASC,Eclipse PDT |
Re: 型のキャスト ニノミヤ カズノリ様
原因が分かりました。 ちょっと家で作ったサンプルファイルが実際のコードとはちがっており、その違いが原因でした。 Abstractクラスを継承したChildクラスでattachMovieのターゲット管理を行うために、privateに "_target"という名前を使っており、 同名のMovieClip._targetとバッティングしたからだと分かりました。 Abstract.as
Child.as
"private"は "_"(アンダーバー)から始める というコーディング規則があり、同名プロパティに気づきませんでした・・・・・・。 もっと基本的なことから注意しなくてはいけませんね。 有難うございました。 |
ペコ | Åê¹ÆNo.34675 投稿日時: 2007-8-14 19:29 |
新米 居住地: 埼玉一歩手前 投稿: 19
使用環境:
WinXP,Flash MX2004pro Flashout,ASDT,MTASC,Eclipse PDT |
Re: 型のキャスト すいません。
どうやら原因はそれだけではなかったようなのです。 いろいろテストした結果。 「パッケージと同名の(空ではない)変数がいるとキャストできない」 という結論になりました。 flaファイルと同階層に aaa フォルダを作り A.as ファイルを記述します。 aaa\A.as
_rootフレームアクション
先の質問も。実際にはパッケージに入っており、 その大元のパッケージ名と同名の変数名がありました。 ただ package.subpackage.Class の場合、 var package = ""; ではキャストできませんが、 var subpackage = ""; ではキャストできました。 はまりました。 |
ニノミヤ カズノリ | Åê¹ÆNo.34678 投稿日時: 2007-8-14 22:13 |
職人 居住地: 東京 投稿: 430
使用環境:
CS4 .4.11, .5.7 XP Pro(sp3) Flash Player 10,0,22,87, AIR 1.5.1, IE 5.5 & 6 & 7 & 8, Firefox 2.0.0.20 & 3.0.11 & 3.5, Opera 9.64, Safari 4, Google Chrome 2.0.172.31, Netscape 7.1 |
Re: 型のキャスト パッケージ名と同名の変数は作成してはいけません。
パッケージ(aaa)は一つのオブジェクトであり、フレームにパッケージと同名の変数を宣言した場合、その変数の値に置き換わってしまい、内包しているクラス(A)は全て失われてしまいます。 この事から、パッケージ名と同名の変数の作成は避けなければなりません。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |