電子書籍の厳選無料作品が豊富!

はじめて質問します。
Javascriptのように、1ヶ月ごとに画像の切り替えをFlashでしたいと思っています。
もし可能であれば、シーンを12ヶ月分作って、月ごとに最後だけシーンを切り替えたいです。
そういうactionscriptはあるのでしょうか。。。
すみませんが、よろしくお願いいたします。

A 回答 (2件)

「最後だけシーンを切り替える」


という部分が,Scriptのメイン部分になるため,非常に答えにくいです。
どういう風にされたいのかがわからないので,例として月によってgotoするフレームを変えるスクリプトを書きます。

基本はJavaScriptと全く変わりません。
使っている関数や構文も全く同じです。
ただ,Flashを動作させる部分がかわるだけです。

「Javascriptの条件文」
http://www.rsch.tuis.ac.jp/~mizutani/online/java …


まずは,月の取得ですが,これはこの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/java …

同じですね。
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/FN050 …

だから ActionScript は JavaScript の弟か子どものようなものです。
JavaScript をされている方は,スルスルと ActionScript が理解できると思います。
私は逆に ActionScript をすることによって JavaScript が少しわかるようになりました。
歴史的にも JavaScript の方が古く,使用人口でも JavaScript の方が多いので,考え方や応用の仕方も JavaScript から得る物は多いです。
    • good
    • 0
この回答へのお礼

詳しい説明ありがとうございます!!!
返事が遅くなり申し訳ございませんでした。
何とかうまくいきました…!!!
本当に本当にありがとうございました。

お礼日時:2005/11/08 22:45

こんにちは。


作っていないので細かいことはわかりませんが、私がご質問のようなものを作ると想定して・・・。

1、月ごとの最後のシーンを12個別ファイルで作ります。
2、各月で共通している動きのファイルを作ります。
3、2で作ったファイルで一番最後に現在の月を読み込み
その月に合った外部swfファイルを読み込む

大体こんな手順で作ることができると思います。
問題になるのは、現在の月なのですが、これは、何か関数があると思います(無責任^^)
後は、それをifがswich(スペル自信なし)で条件分岐してやれば、
できます。
簡単にですが,頑張って下さい。
    • good
    • 0
この回答へのお礼

ありがとうございました。
返事が遅くなり申し訳ございませんでした。
シーンで切り替えがちょっとうまく行かず、レイヤーで12か月分区切って作りました。。。
返答、本当にありがとうございました。

お礼日時:2005/11/08 22:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!