for文でonRelease
いまさらな、Flash8のネタシリーズですが、やっと出来たのでメモしておきます。
多数のボタンに対してonReleaseのスクリプトを書くのが面倒なので、for文をつかっていっぺんにすませる方法です。これが2年前に分かっていればよかったのに・・・。(笑)
- ステージ上に配置した、複数のムービークリップインスタンス(画像のサムネイル、インスタンス名がbox1〜box7)を、ボタンとして使用する。
- これらのボタンをonReleaseすると、ステージ上に大きな画像(foto1〜foto7)を、foto_mcとしてattachMovieする。
- 同時に、onReleaseしたサムネイル上にcoverというムービークリップをattachMovieし、ボタンが押されている状態を表現する。
今まで書いていたスクリプト
box1.onRelease = function() { _root.attachMovie("foto1", "foto_mc", 0, {_x:5, _y:5}); _root.attachMovie("cover", "cover_mc", 1, {_x:480, _y:12}); }; ・ ・ ・ 途中省略 ・ ・ ・ box7.onRelease = function() { _root.attachMovie("foto7", "foto_mc", 0, {_x:5, _y:5}); _root.attachMovie("cover", "cover_mc", 1, {_x:480, _y:297.6}); };
for文を使って、一回分のスクリプトで7個のボタンを動かせないか?と思いつづけてはや幾年。
7個ならまだいいが、ボタンがたくさん増えれば増える程、スクリプトを書くだけでも面倒くさい。
で、いまごろになってですが、どうやって書いたらいいのだろう?とググっていたらふと解決!してしまいました。コレちょっとうれしい・・・。(笑)
Flash8ではいちおう動いているので、メモしておきます。
for (i=1; i<=7; i++) { this["box"+i].no = i; this["box"+i].onRelease = function() { _root.attachMovie("foto"+this.no, "foto_mc", 0, {_x:5, _y:5}); _root.attachMovie("cover", "cover_mc", 1, {_x:480, _y:12+(this.no-1)*47.6}); }; }
※追記
box1〜box7のx,y座標に合わせて、cover_mcをattachMovieするように変更しました。
これで、box1〜box7のムービークリップインスタンスがどこにあっても、ボタンの上にcover_mcがおけるようになります。ちょっと便利カモしれません。
for (i=1; i<=7; i++) { this["box"+i].no = i; this["box"+i].onRelease = function() { _root.attachMovie("foto"+this.no, "foto_mc", 0, {_x:5, _y:5}); _root.attachMovie("cover", "cover_mc", 1, {_x:_root["box"+this.no]._x, _y:_root["box"+this.no]._y}); }; }
参考記事:http://qanda.rakuten.ne.jp/qa4626875.html
http://suzupara.iinaa.net/kiso351.html