質問: FLASH&アクションスクリプト初心者です。 同じ階層にindex.swfという名前とcontent.swfという名前でswfファイルを置いています。index.swfのボタンシンボルを押すとindex.swfのムービークリップ(loadいう名にしています)上にcontent.swfを読み込むようにしています。その読み込んだcontent.swfのあるボタンシンボルを押すとindex.swfのタイムラインを指定したラベル(moveという名にしています)に移動させたいのですが、方法がわかりません。ご教授いただけると幸いです。アクションスクリプトは2.0を使用しています。
回答: ActionScript 1.0&2.0 の場合 MC(ムービークリップ)に外部SWFをロードすると その外部SWFはそのMC自体と同じ存在になります。 ですからロードするしないは関係なく, 「ターゲットパス」さえ理解していれば MCプ内にボタンを置いたと思って考えるだけで 普通の場合と変わらずできると思います。 「ターゲットパス」 > ムービークリップ(loadいう名にしています) そういう紛らわしいネーミングは混乱や誤作動の原因になるだけです。 「index.swf」内にある「content.swf」をロードするMCには 「load_mc」というインスタンス名を付けてあるものと変えます。 また 「content.swf」内のボタンには 「cnt_btn」というインスタンス名を付けてあるものとします。 ◎階層構造 index.swfの_root └load_mc(MC) content.swfの_root └cnt_btn(ボタン) ◎スクリプト例 ○場合1-1 cnt_btn自体に書くスクリプト例(絶対パス) on (release) { _root.gotoAndStop("move"); } ○場合1-2 cnt_btn自体に書くスクリプト例(相対パス) on (release) { this._parent.gotoAndStop("move"); } ○場合2-1 cnt_btnを置いたフレームに書くスクリプト例(絶対パス) cnt_btn.onRelease = function():Void { _root.gotoAndStop("move"); }; ○場合2-2 cnt_btnを置いたフレームに書くスクリプト例(相対パス) cnt_btn.onRelease = function():Void { this._parent._parent.gotoAndStop("move"); }; ※cnt_btnを置いたフレームとはつまり, content.swf 内のメインタイムラインのフレームのことです。 ※場合1-2 と 場合1-2 は ActionScript 1.0 の範囲内のスクリプトです。 (パブリッシュ設定 は ActionScript 1.0 にしていても 2.0 にしていても どちらでもかまいません。) 一方 場合2-1 と 場合2-2 は Voidキーワード を含むため ActionScript 2.0 の範囲内のスクリプトです。 (パブリッシュ設定 を ActionScript 2.0 にしてないと エラーが出ます。)