メイン ActionScript 3.0 特設会議室
for文での、MovieClip.id=i は、OK、Sprite.id=i は、NGの理由 | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| joyko | Åê¹ÆNo.42913 投稿日時: 2009-7-13 10:02 |
常連 ![]() ![]() 居住地: 埼玉県 投稿: 167
使用環境:
WinXP(SP3) Flash8 Basic FlashCS3Flash CS4 |
for文での、MovieClip.id=i は、OK、Sprite.id=i は、NGの理由 皆さん、
おはようございます。 環境は、Win XP(SP3)、CS3/AS3です。 【現状】for文内で、i を保管しておく手段として、AS2.0では、MovieClip.id=i; なる方法を、良く使ってました。 AS3.0でもそれが効果あるかを試しましたが、答えは、Yesでした。 そこで、(タイムラインのない、MovieClipとしか 理解してないのですが、)Spriteに対しても、 同じことをしてみたら、答えは、Noでした。 【質問】 ・2つは、同じ、DiplayObjectContainerで、 違いは、TimeLineがあるかないかの違いだと理解してますが、 この差が出るのは、何故でしょうか? 以下、MovieClipを使った、テストscriptです。 →mc.idが取得できます。 これは、Spriteを使った、テストscriptですが、Sprite.idが取得できません。エラーになります。 →SpriteがDynamicでないことを、教えて頂いた後、 配列を使わずに、e.target.nameの数字部分の抽出と それを数値化して、番号取得の例も記載します。 1.MovieClipとSpriteの違いに対する、認識不足があるかと思いますが、その点を教えて頂けると、理解が深まります。 2.正直、AS3.0で登場した、TimeLineのない、Spriteなるものの 使い道が、今一、分かってません。 本によると、「第一フレームで事足りることが、多いので、MovieCLipから派生した、Spriteを新規に提供し、 サイズの増加防止と管理の容易性をprovideする」との事ですが、 既述した事程度でつまずくようでは、 結局、MovieClipを使った方が、何かと、応用が効くような気がしてます。 皆さんは、いかがお考えでしょうか? |
| 野中文雄 | Åê¹ÆNo.42914 投稿日時: 2009-7-13 10:33 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: for文での、MovieClip.id=i は、OK、Sprite.id=i は、NGの理由 Spriteクラスはdynamicでないため、プロパティ(変数)を加えることができません。
参考:「rootプロパティでメインタイムラインの関数にアクセスできない」 Spriteクラスを使う理由は、軽くて無駄がないから、ということでしょう。 参考: akihiro kamijo「SpliteクラスとMovieClipクラス」 引用: joykoさんは書きました: [追記] 対応策としては、dynamicなクラスで別途管理することでしょう。 |
| Tonpoo (gaienboy改め) | Åê¹ÆNo.42916 投稿日時: 2009-7-13 10:44 |
職人 ![]() ![]() 居住地: 東京・神宮前 投稿: 717
使用環境:
Windows 7 Professional, Flash CS5 Pro,Flash Player 10,1,102,64 |
Re: for文での、MovieClip.id=i は、OK、Sprite.id=i は、NGの理由 gaienboyです。その問題の原因は、当該クラスがdynamicクラスなのか否かとい
う点に依存します。ヘルプを見ると、MovieClipクラスはdynamicクラス属性に指 定されていますが、Spriteクラスにはそれが指定されていないことがわかります。 public class Sprite public dynamic class MovieClip そして、下記ページの記述をご覧頂くとわかりますが、dynamicクラス属性に指 定されているクラスのインスタンスには、後から任意にプロパティやメソッドを追 加することができますが、そうでないクラスにはそれができません。 ActionScript 3.0 のプログラミング > ActionScript プログラミングの概要 > ActionScript 言語とシンタックス > データ型 > ダイナミッククラス ちなみにSpriteクラスがdynamicでないというのは私も今知りました(汗)。 メリットデメリットについてはおそらく処理が軽いというようなことが一番だろう と思います。 ※野中先生に先を越されてしまいました(笑)。内容重複しますが、リンク先など の参考になるかと思うので、このまま投稿します。
|
| joyko | Åê¹ÆNo.42917 投稿日時: 2009-7-13 11:03 |
常連 ![]() ![]() 居住地: 埼玉県 投稿: 167
使用環境:
WinXP(SP3) Flash8 Basic FlashCS3Flash CS4 |
Re: for文での、MovieClip.id=i は、OK、Sprite.id=i は、NGの理由 野中さん、gaienboyさん、
お二人共、ありがとうございました。 「Sprite=MoviClip-TimeLine」という、定番のaboutな考えで、思考停止してましたので、今回、よ?く、分かりました。 再度、ありがとうございました。 PS:きちんと、ヘルプを読むようにします。 尚、野中さんに配列方式を教えて頂ましたが、Dynamicでない以上は、他の方法もあろうかと、配列を使わない、(少し、姑息かな?)方式で試してみましたが、動くようです。以下がそのscriptです。 ![]() |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



ログイン


WinXP(SP3)
Flash8 Basic
FlashCS3


.6.8 



Tonpoo (a.k.a. gaienboy)