• 締切済み

AS3.0でのattachMovie

私はFlash 初心者で、ActionScript3.0とflashの勉強中で、表題のところで詰まってしまいお尋ねしたいことがあります。 for (i = 0; i < s_num; i++) { _root.attachMovie("sks" + i,"sks" + i,i); sks[i] = eval("sks" + i); sks[i]._x = 320 - 125 * (s_num - i); sks[i]._y = 50; } AS3.0ではeval、attachMovieという関数は存在しておりません。 AS3.0の場合、どのように記述したらよいのかわからないので、どなたか教えていただくことはできますでしょうか。

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

スクリプトの前に まず下準備の段階から ActionScript 2.0 以下 と 3.0 とでは違いがあります。 ActionScript 2.0 以下で attachMovie をするときには ライブラリにあるムービークリップシンボルに対して リンケージより "識別子" を付けますが ActionScript 3.0 ではそもそも識別子が付けられません。 ActionScript 3.0 の場合は ライブラリにあるムービークリップシンボルに対して リンケージより "クラス名" を付けます。 クラス名は次のページのような感じで付けます↓。 「インタラクティブ映像制作実習 II(1) 第3回 表示リスト」 http://www.ritsumei.ac.jp/kic/~saitos/interactive2/lec_3.html 書かれていらっしゃるスクリプトの変数「s_num」には いったいどのような数値が入っているのかわかりませんが, もし「4」という数値が入っていたとするならば 4つのムービークリップシンボルを用意して それぞれに「sks0」「sks1」「sks2」「sks3」というクラス名を付けることになります。 それでやっと本題のスクリプトですが ご質問のスクリプトを ActionScript 3.0 に書き換えると 次のようになります(フレームに書くスクリプトの書き換え例)。 //---------------------------------------- //「s_num」には仮に4を代入しておく var s_num:int = 4; for (var i:int = 0; i < s_num; i++) { //クラスの参照を作成 var myClass:Class = Class(getDefinitionByName("sks" + i)); //そのクラスのインスタンス「sks○」を作成 this["sks" + i] = new myClass(); //この階層に配置 addChild (this["sks" + i]); //配置したインスタンスの座標を指定 this["sks" + i].x = 320 - 125 * (s_num - i); this["sks" + i].y = 50; } //---------------------------------------- クラス名の付け方も含めて だいたいのことは次のページに書かれています↓。 「[AS3] クラスを文字列で参照したい」 http://f-site.org/articles/2008/01/17051234.html あと,eval は, Flash 4(ActionScript 1.0 誕生よりも前)や Flash 5 (ActionScript 1.0 の最も初期型)のときに使われていたもので ActionScript 1.0 でも後半以降はほとんど使いません。 ActionScript 1.0 後半~ActionScript 3.0 では eval ではなく配列アクセス演算子を使うのが一般的です。 「ドット演算子と配列アクセス演算子」(ActionScript 1.0 & 2.0 用) http://www.fumiononaka.com/TechNotes/Flash/FN0507001.html 「ドット演算子と配列アクセス演算子」(ActionScript 3.0 用) http://www.fumiononaka.com/TechNotes/Flash/FN1107002.html

関連するQ&A