メイン ActionScript 3.0 特設会議室
AS3 だと MovieClip を for..in でのプロパティ列挙できない!? | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| ながながい | Åê¹ÆNo.35953 投稿日時: 2007-11-4 17:53 |
半人前 ![]() ![]() 居住地: 京都 投稿: 30
使用環境:
WindowsXP SP2, Flash CS3, Flash8 |
AS3 だと MovieClip を for..in でのプロパティ列挙できない!? AS でデバッグ用などで MovieClip の変数・プロパティを列挙させたいときに for-in をよく使うのですが、
これまで AS2 で機能していた文が AS3 で効かないので、質問させてください。 次のように、root の MovieClip に動的にプロパティを設定し、 その直後に for..in で列挙しようとしているだけですが、 結果が AS2 と AS3 とで異なります。AS3では列挙できないみたいですね。 そこで、for..in をヘルプで調べてみたところ、 引用: オブジェクトの動的プロパティまたは配列のエレメントに対して反復処理を行い、各プロパティまたはエレメントに対して statement を実行します。オブジェクトのプロパティは特定の順序で保持されないため、プロパティは外見上ランダムな順序で表示されます。for..in ステートメントでは、クラスに定義された変数やメソッドなどの固定プロパティは列挙されません。固定プロパティのリストを取得するには、flash.utils パッケージにある describeType() 関数を使用します。 とありました。 AS3 では、ライブラリ内の MovieClip シンボルはパブリッシュ時にすべて flash.display.MovieClip を継承したカスタムクラスになると聞いていますが、今回もフレームアクションの記述がインスタンスプロパティとして認識され、その結果、for..in で列挙できないと考えればいいのでしょうか? なお、describeType() を使用してXMLを表示させると、 引用: <variable name="c" type="Array"/> という記述があることがわかりました。 MovieClip のプロパティを好きなタイミングで列挙したい場合、 (1) 上記XMLからプロパティ名を取得 (2) それをもとにたどる というプロセスを踏む必要があるということでしょうか? どなたか、この付近の仕様や列挙方法に関してお答えくださいませんでしょうか? よろしくお願いします。 |
| ニノミヤ カズノリ | Åê¹ÆNo.35958 投稿日時: 2007-11-4 21:26 |
職人 ![]() ![]() 居住地: 東京 投稿: 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: AS3 だと MovieClip を for..in でのプロパティ列挙できない!? こちらが参考になると思います。
ではなく、 としなければ表示されないようですね。 |
| ながながい | Åê¹ÆNo.35967 投稿日時: 2007-11-5 4:59 |
半人前 ![]() ![]() 居住地: 京都 投稿: 30
使用環境:
WindowsXP SP2, Flash CS3, Flash8 |
Re: AS3 だと MovieClip を for..in でのプロパティ列挙できない!? >ニノミヤさん
情報ありがとうございます! リンク先にばっちりほしい情報がありました。 たとえダイナミックなクラスだとしても、クラスで定義したプロパティ・メソッドは列挙できないんですね。 納得いきませんが、そういう仕様なんですね・・・。 describeType() と併用したデバッグ用のクラスを自作して活用したいと思います。 でわでわ。 |
| oryaaaaa | Åê¹ÆNo.36108 投稿日時: 2007-11-11 13:15 |
新米 ![]() ![]() 居住地: 投稿: 7
使用環境:
MacOSX Tiger, FLASH CS3 |
Re: AS3 だと MovieClip を for..in でのプロパティ列挙できない!? ActionScript3の高速化根拠に、変数をルックアップでなく
アドレス参照で処理している点から難しいのだと思います。 元に(AS2へ)戻すような処理を作ったら、高速化根拠が 崩れて10倍遅くなってしまうかも、しれませんね |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



ログイン




CS4
.4.11,
XP Pro(sp3)

