アプリ版:「スタンプのみでお礼する」機能のリリースについて

Flash Professional CS6でスクリーンセーバーを制作しています。
「春」「夏」「秋」「冬」と季節ごとに変化するものを作りたいのですが、作り方が分かりません。

もっと細かく説明すれば
「3月・4月・5月」→桜が舞うスクリーンセーバーを表示
「6月」→雨が降るスクリーンセーバーを表示
「7月・8月」→緑葉が舞うスクリーンセーバーを表示
「9月・10月・11月」→紅葉が舞うスクリーンセーバーを表示
「12月・1月・2月」→雪が降るスクリーンセーバーを表示

「桜」「雨」「緑葉」「紅葉」「雪」のアニメーションは既に完成しています。
(ActionScript 3.0使用・別々のflaファイルとして保存してあります)
それらを1つのファイルに合体させて、ActionScript 3.0で季節ごとに表示を自動で切り換えるスクリプトを書きたいです。

ActionScript 3.0で時間を組み込む方法、ご教授宜しくお願い致します。

A 回答 (1件)

もし Flash(SWFファイル) をネットにアップする場合でしたら


その作成されているFlash(SWFファイル)自体の
ロード待ち処理などを考えたりしなければならないため
下に書く方法が適切とは言えない場合も出てきますが
スクリーンセーバーは基本的にローカルファイルですから
下に書くような方法で良いのではないかと思います。



まず,下に書く内容の大まかな骨子を書きますが
全体的には
「各季節(5季節)を別々のシーンに配置して
月によって再生させるシーンを変える。」
ということをすれば良いのではないかということです。

新規ドキュメントファイル(FLAファイル)を作成して
そのドキュメント内に「桜」「雨」「緑葉」「紅葉」「雪」のアニメーションをつないで行くのですが
そのときに各アニメーションをシーンごとに分けてコピペします。

新規ドキュメントを作成すると
メインのタイムライン(の「シーン 1」)が見えるわけですが
「挿入」→「シーン」で「シーン 2」~「シーン 6」の5つのシーンを挿入します。

そして
「シーン 2」のタイムラインには「桜」
「シーン 3」のタイムラインには「雨」
「シーン 4」のタイムラインには「緑葉」
「シーン 5」のタイムラインには「紅葉」
「シーン 6」のタイムラインには「雪」
の各タイムラインをコピペします。

ドキュメントファイル内でのシーン移動は
ステージの上にあるバーの右の方にある
「ガチンコ」アイコンをクリックすればできると思います。

アニメーションのコピペは
作成した各アニメーションのタイムラインの全てのレイヤーとフレームをドラッグで選択して
右クリックなどより「フレームをコピー」を選択し
ペーストしたいシーンのフレーム1を選択して
右クリックなどより「フレームをペースト」を選択すればできると思います。

・参考↓
「アニメーション作成の手抜きテクニック:ITpro」
http://itpro.nikkeibp.co.jp/article/COLUMN/20060 …
→「フレーム全体をコピーする」の項目


各アニメーションFLAに
シンボル名が同じシンボルがあると
コピペするときに厄介なことが起こって困るので
各アニメーションFLAのシンボル名は違うものにしておいた方が良いと思います。
(例:「桜シンボル1」,「紅葉シンボル1」など)


そして
何も配置していない 「シーン 1」のフレーム1を選択して
次のようなスクリプトを書きます。

//----------------------------------------------
//今現在の Date インスタンス my_tade を作成
var my_date:Date = new Date();

//my_date から 月番号(0~11) を取得
var month_num:int = my_date.getMonth();

//もし月番号が2~4であれば(3~5月であれば)
if (month_num >= 2 && month_num <= 4) {
//シーン 2 の フレーム1 から再生
gotoAndPlay(1,"シーン 2");
//もし月番号が5であれば(6月であれば)
} else if (month_num == 5) {
//シーン 3 の フレーム1 から再生
gotoAndPlay(1,"シーン 3");
//もし月番号が6または7であれば(7または8月であれば)
} else if (month_num == 6 || month_num == 7) {
//シーン 4 の フレーム1 から再生
gotoAndPlay(1,"シーン 4");
//もし月番号が8~10であれば(9~11月であれば)
} else if (month_num >= 8 && month_num <= 10) {
//シーン 5 の フレーム1 から再生
gotoAndPlay(1,"シーン 5");
//もし月番号が上記以外であれば(12または1または2月であれば)
} else {
//シーン 6 の フレーム1 から再生
gotoAndPlay(1,"シーン 6");
}
//----------------------------------------------



これで
月によって違うシーンの冒頭にジャンプするようになります。

しかしこれだけでは
ムービー全体がループ再生されてしまうので
各シーンの最終フレームにキーフレームを作って
次のように書いて行きます。

//---「シーン 2」の最終フレーム---------
//シーン 2 の フレーム1 から再生
gotoAndPlay(1,"シーン 2");
//--------------------------------------


//---「シーン 3」の最終フレーム---------
//シーン 3 の フレーム1 から再生
gotoAndPlay(1,"シーン 3");
//--------------------------------------


他のシーンの最終フレームも同様に…。

 

==========================

結局のところ,
new Date() で Date インスタンスを作成して
getMonth() メソッド で月番号を取得し
その月番号によって動作を変えれば良いのです。

シーンを使うと
そんなに難しい知識は要りませんし説明も簡単であるため
各季節のアニメーションを各シーンに用意する方法を書きましたが
別にシーンを使わなくても良いのです。

例えば
5つの ムービークリップを用意して
そのムービークリップ内のタイムラインに
各季節のアニメーションを用意して
月番号によって表示させるムービークリップを変えても良いわけです。

もしそういう方法を使うとすれば
インスタンス名とか階層とか場合によってはクラスとか
そういうものの概念などの理解も必要になってきたり
説明も難しくなってくるのでシーンで説明しただけです。

余裕があったり,
違うものを作る機会があれば,
色々な方法を考えてチャレンジしてみるのも良いかもしれません。
    • good
    • 0

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