• ベストアンサー

ボタンのアクションスクリプトについて

ボタンをクリックしたら指定のURLを開かせる、というときは、ボタンのアクションスクリプトに対して、 on(press){ getURL ("01.html"); } としますよね? これを「●●」という名前のボタンは「01.html」、というように一括で変更する方法はありますか? 最初は「01.html」だったけど、その後「../01.html」になった場合、ひとつひとつ選択して変えなくてはなりません。 もし、そういう方法があったら便利だなと思ったモノで。 使用しているのはFLASH5です。

質問者が選んだベストアンサー

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

> on(press){ > getURL ("01.html"); > } > > としますよね? 普通は on(press) ではなく on(release) ですが, そういう細かい話ではなく大きく言えば,書かれていらっしゃる通りそうします。 Flash 5 では,ほとんどそれしか道がありません。 余談ですが1つ後のバージョン Flash MX からは  ボタンインスタンス.onPress = function(){}; や  ボタンインスタンス.onRelease = function(){}; などがフレームに書けるようになったので,より柔軟に色々なことができるようになりました。 またさらに ActionScript3.0 になると, 逆に on(press) や on(release) というようなものをボタン自体に書くということはできなくなりました。 ムービークリップ自体に書く onClipEvent (enterFrame) なども同様に使えなくなりました。 というわけで, Flash 5 では良いも悪いもなく on(press) や on(release) を使うしかありません。 兎にも角にもそれで行くしかないわけですから, 変えるとなると getURL ("01.html"); の "01.html" の部分を変数などにして, その変数などの値を変えるという方向しか道はありません。 道が1つしかないのですから逆に悩む必要はないので,その点は楽かもしれません。 > 最初は「01.html」だったけど、その後「../01.html」になった場合、 これは変わる規則などによるので何とも言えませんが, オーソドックス(原始的)に考えるなら次のようにします。 例えば3つのボタンとそれに対応するURLが3つあったとします。 その場合 _root の フレーム1 辺りにでも url0 = "01.html"; url1 = "02.html"; url2 = "03.html"; と書いておいて, 各3つのボタンには on(press){ getURL (_root.url0); } on(press){ getURL (_root.url1); } on(press){ getURL (_root.url2); } と書いておけば, _root のフレーム1の3行を変えるだけでボタンがジャンプするURLも変わります。 _root.url0 などの 「_root」 は抜いてもらってもかまいません。 「_root」 を付けておくとボタンをムービークリップの中に入れた場合でもそのまま使えるので書いているだけです。 それ以上の手抜き方法も色々あります。 しかしこれは本当に場合(データ)によります。 _root のフレームのスクリプトを for (i=0; i<=2; i++) { this["url"+i] = ("0"+(1+i)).substr(-2, 2)+"html"; } このように↑しても url0 = "01.html"; url1 = "02.html"; url2 = "03.html"; と書いたのと同じことになります。 したがって,「../01.html」になった場合は for (i=0; i<=2; i++) { this["url"+i] = "../"+("0"+(1+i)).substr(-2, 2)+"html"; } とすれば url0 = "../01.html"; url1 = "../02.html"; url2 = "../03.html"; を書いたのと同じことになります。 変更が非常に楽です。 さらに "../" を変数にしておいても良いと思います。 path = "../"; for (i=0; i<=2; i++) { this["url"+i] = path+("0"+(1+i)).substr(-2, 2)+"html"; } こうすると 「path = "../";」 の部分だけを変えるだけですべてのボタンのジャンプ先URLが一気に変えられることになります。 また, path という変数名を付けたテキスト入力のテキストフィールドを用意しておくと, Flash作成者ではなく,SWF閲覧者が自由にパスを変えることもできるようにもなります。 「URLデータの形」やその「データの変化の規則性」や「使う場合」などによって,その辺の工夫は様々に変わります。 ・ for文 に関しての参考URL 「繰り返し文 for - FLASHアクションスクリプト入門編」 http://isvalid.jp/actionscriptLab/ASlesson/actionsctipt_for.html ・ 演算子 [ ] に関しての参考URL 「ドットシンタックスと配列アクセス演算子」 http://www.fumiononaka.com/TechNotes/Flash/FN0507001.html ・ substr の弟1引数にマイナスを使うことに関しての参考URL 「Flashカウンタその7(完成)」 http://blog.oni100.jp/?eid=198222

w-inty
質問者

お礼

回答ありがとうございます。 おお!!教えていただいた方法でできました!! めっちゃ簡単に修正ができるようになり、とてもうれしいです。 ありがとうございました☆

関連するQ&A