- ベストアンサー
Flashのactionscriptについて(画像の時間指定切り替え)
はじめて質問します。 Javascriptのように、1ヶ月ごとに画像の切り替えをFlashでしたいと思っています。 もし可能であれば、シーンを12ヶ月分作って、月ごとに最後だけシーンを切り替えたいです。 そういうactionscriptはあるのでしょうか。。。 すみませんが、よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
「最後だけシーンを切り替える」 という部分が,Scriptのメイン部分になるため,非常に答えにくいです。 どういう風にされたいのかがわからないので,例として月によってgotoするフレームを変えるスクリプトを書きます。 基本はJavaScriptと全く変わりません。 使っている関数や構文も全く同じです。 ただ,Flashを動作させる部分がかわるだけです。 「Javascriptの条件文」 http://www.rsch.tuis.ac.jp/~mizutani/online/javascript/condition.html まずは,月の取得ですが,これはこの2行だけで良いです。 ------------------------------ // 新しい Date オブジェクトを作成する myDate = new Date(); //変数 tuki にDate オブジェクトの月+1 を取得 tuki = myDate.getMonth()+1; ----------------------------- getMonth()+1 にしていますが, 1月だと0,2月だと1… という具合になるので紛らわしくないようにこの段階で+1をしただけです。 単なる私の趣味です。 JavaScript と同じく変数だとわかりやすいように前に var を付けて ----------------------------- var myDate = new Date(); var tuki = myDate.getMonth()+1; ----------------------------- のようにしてもかまいません。 次にこの得られた tuki の値によって,if文で分岐させます。 1月だったら31フレームに,2月だったら41フレームに… というのをスクリプトにすると以下に様になります。 --------------------------- myDate = new Date(); tuki = myDate.getMonth()+1; if (tuki == 1) { gotoAndPlay (31); } else if (tuki == 2) { gotoAndPlay (41); } else if (tuki == 3) { gotoAndPlay (51); } else if (tuki == 4) { gotoAndPlay (61); } else if (tuki == 5) { gotoAndPlay (71); } else if (tuki == 6) { gotoAndPlay (81); } else if (tuki == 7) { gotoAndPlay (91); } else if (tuki == 8) { gotoAndPlay (101); } else if (tuki == 9) { gotoAndPlay (111); } else if (tuki == 10) { gotoAndPlay (121); } else if (tuki == 11) { gotoAndPlay (131); } else { gotoAndPlay (141); } ---------------------------- 上に書いたURLをもう一度見直してみるとわかりますが, 「Javascriptの条件文」 http://www.rsch.tuis.ac.jp/~mizutani/online/javascript/condition.html 同じですね。 gotoAndPlay (○○); とか言うFlash特有な部分が挟まっているだけです。 これを,タイムラインの月ごとに進みたいフレームに書けば, そのフレームに達したとき目的のフレームに自動的にジャンプします。 しかし,上のように規則正しい法則にしたがって, goto するフレームを変える場合は,if文の分岐も要りません。 上のスクリプトはよく見ると, tuki=1 のとき 31(フレーム) tuki=2 のとき 41(フレーム) tuki=3 のとき 51(フレーム) … … tuki=n のとき n×10+21(フレーム) となっているのがわかります。 if文だとたいていの分岐に対応できます。 でもif文だとダラダラ長くて,格好が悪いですし,PCの頭も余分に使ってしまいます。 ですから上のような場合,普通は, ----------------------------- myDate = new Date(); tuki=myDate.getMonth()+1; gotoAndPlay(tuki*10+21); ----------------------------- と書きます。 これの方がスッキリしていて良いですね。たった3行になります。 上記参考URLにはないですが,こういう方法は当然JavaScriptでも他の言語でも使います。 最後のシーンはいったいどうしたいのかによって, gotoAndPlay (○○); の部分が変わります。 loadMovie を使って他のムービーを読み込むとか, ○○.play(); で,インスタンス名○○のムービークリップをスタートさせるとか, 様々です。 とりあえずは if文を使う形で考えてみて,もし公式化できそうだったら, if文ではなく,短縮することも考えてみてください。 この月の値はローカルPCの時刻を取得しています。 PCの日付と時刻の調整で月を変えてもらうと,本当にスクリプトはうまく動作するのかが確認出来ます。 ===雑談========================= Flashのスクリプトは ActionScript と呼ばれています。 こう呼ばれるようになったのは,日本ではFlash5(2000年10月13日発売)からです。 それまでは正式にはそう呼ばれていなくて,単にアクションと呼ばれていました。 よく考えると旧世紀の話ですね。 アクションと呼ばれていた頃のスクリプトは,JavaScript とは全く似ていないもので,VBA とか VBScript に似た感じの言語でした。 例えば If は End If で閉じていました。 On も End On で閉じていました。 ところが,それまでとは全く違う,ActionScript という言語を,マクロメディアが JavaScript の標準規格である ECMAScript をベースに独自に作り,Flash5からその言語形式を採用したのです。 http://www.fumiononaka.com/TechNotes/Flash/FN0506003.html だから ActionScript は JavaScript の弟か子どものようなものです。 JavaScript をされている方は,スルスルと ActionScript が理解できると思います。 私は逆に ActionScript をすることによって JavaScript が少しわかるようになりました。 歴史的にも JavaScript の方が古く,使用人口でも JavaScript の方が多いので,考え方や応用の仕方も JavaScript から得る物は多いです。
その他の回答 (1)
- amountainblast
- ベストアンサー率33% (63/186)
こんにちは。 作っていないので細かいことはわかりませんが、私がご質問のようなものを作ると想定して・・・。 1、月ごとの最後のシーンを12個別ファイルで作ります。 2、各月で共通している動きのファイルを作ります。 3、2で作ったファイルで一番最後に現在の月を読み込み その月に合った外部swfファイルを読み込む 大体こんな手順で作ることができると思います。 問題になるのは、現在の月なのですが、これは、何か関数があると思います(無責任^^) 後は、それをifがswich(スペル自信なし)で条件分岐してやれば、 できます。 簡単にですが,頑張って下さい。
お礼
ありがとうございました。 返事が遅くなり申し訳ございませんでした。 シーンで切り替えがちょっとうまく行かず、レイヤーで12か月分区切って作りました。。。 返答、本当にありがとうございました。
お礼
詳しい説明ありがとうございます!!! 返事が遅くなり申し訳ございませんでした。 何とかうまくいきました…!!! 本当に本当にありがとうございました。