最速怪談選手権

あらかじめ画像を12枚用意しておいて、
毎月 1日に表示する画像を自動で切り替えるようにするにはどうすればよいでしょうか?

下記URLのようなイメージです。
http://flash.xtaro.com/sozai/welcome12.htm

簡単な作り方、もしくはflaを配布しているURL等があったら勉強したいので教えてください。

A 回答 (2件)

作成手順は,



 1 ムービークリップに外部画像をロード表示させてみる
 2 月を取得してみる
 3 月によってロードする外部画像を変える

という感じで段階を経て1つずつを確実に作成するのが良いと思います。


書かれていらっしゃるページからは 「wel12.zip」 をダウンロードできます。
ちょうど良いので説明にはこれを使わせてもらいます。

また肝腎の Flash のバージョンを書かれていらっしゃいませんので,
できるだけバージョンを下げた Macromedia(現Adobe) Flash5,ActionScript1.0 でできる範囲で書きます。



1 ムービークリップに外部画像をロード表示させてみる

「wel12.zip」 を任意の場所に保存し解凍すると次のようなファイル群が出てきます。

 wel12[フォルダ]
  ├ wel12.swf
  ├ その他のファイル
  └img[フォルダ]
    ├ photo1.jpg
    ├ photo2.jpg
    ├ photo3.jpg
    ├  …略…
    └ photo12.jpg

photo1.jpg ~ photo12.jpg は,横400px×縦300px ですから,
まずFlashを起動させて新規ドキュメントを作成し,
ムービーのサイズ(ステージのサイズ)を,幅400px・高さ300px に設定して,
wel12[フォルダ] に,「任意の名前.fla」 で保存します。

ステージ上に 20px×20px くらいの色の付いた四角の塗りを描きます。
(大きさは厳密ではなくて 5px×5px でも 100px×100px でも適当で良いです。)

その四角い塗りを選択して,
「修正」→「シンボルに変換」(バージョンによっては「挿入」→「シンボルに変換」)で,
ムービークリップに変換します。

このムービークリップに変換するときに「基準点(R)」の位置に気をつけておきます。
この例では 左上 にチェックを入れて「OK」し,基準点が左上のムービークリップを作成します。
本当は基準点はどこでも良いので,絶対に左上にしなければならないことはありません。
何も考えないのではなくて 「基準点に気を付ける」 ということが大切です。

外部画像やムービーをロードするとき,
外部画像やムービーの左上のコーナーが,基準点の位置に来るようにロードされます。
したがって,
上で作成した四角い塗りのムービークリップをステージの左上のコーナーにピッタリ付く位置に配置します。

 基準点が左上のムービークリップ
  ↓
  ■□□□□□□□□
  □□□□□□□□□
  □□□□□□□□□
  □□□□□□□□□
 └----ステージ----┘

次にこのムービークリップを選択して,
下のプロパティインスペクタなどからインスタンス名を付けます。
この説明では,
「gazou_mc」というインスタンス名を付けることにしておきます。

この「gazou_mc」に外部画像をロード表示させれば良いわけです。
外部画像のロードには ActionScript が必要です。
ActionScript 専用レイヤー(と言っても普通のレイヤー)を挿入して,
その ActionScript レイヤーの フレーム1 の空白キーフレームに次のようなスクリプトを書きます。

--------------------------------------
// 「gazou_mc」 に imgフォルダ の 「photo1.jpg」 をロード
gazou_mc.loadMovie("img/photo1.jpg");
--------------------------------------

そして,
「制御」→「ムービープレビュー」してみると,
ステージいっぱいに「photo1.jpg」が表示されると思います。

なお,
お使いの Flash のバージョンが Flash CS3 Professional でしたら,
デフォルトでは ActionScript3.0 の SWF をパブリッシュする設定になっていると思います。
その場合はうまく動作しないと思いますから,
「ファイル」→「パブリッシュ設定」で,ActionScriptのバージョンを 2.0 とか 1.0 にしてムービープレビューしてください。

ここまでできましたら,
弟1段階 「ムービークリップに外部画像をロード表示させてみる」 は完成です。



2 月を取得してみる

月や時刻などが取得できるのが Flash 5 以上です。
これには,
 Dateオブジェクト を作成して
 そのオブジェクトから 月 の番号を取りだす。
という順序のActionScriptをコーディングします。

上で作成したFLAファイルのフレーム1のスクリプトを次のように書き替えます。

--------------------------------------
// Date(日付)オブジェクト myDate の作成
myDate = new Date();

// myDate から月の番号を取得して変数 M に代入
M = myDate.getMonth();

// 試しに M を出力表示させてみる
trace(M);

// 「gazou_mc」 に imgフォルダ の 「photo1.jpg」 をロード
gazou_mc.loadMovie("img/photo1.jpg");
--------------------------------------

書き替えるというより,
「photo1.jpg」 をロードするスクリプトの上に,
月を取得する3行(註釈含めて6行)のスクリプトを付け足すということです。

これで「制御」→「ムービープレビュー」してみます。
すると今(2008年5月)だと,「4」が出力窓に表示されると思います。
「4」が出力されるのが正常です。

月の番号は,1月が0,2月が1,3月が2,…,12月が11 です。
したがって,今(2008年5月)だと,「4」 が出力されることになります。

ここまでできましたら,
弟2段階 「月を取得してみる」 は完成です。



3 月によってロードする外部画像を変える

上で得た 0~11 の数字を使って,ロードするJPEGを変えれば,
月によって表示させる画像を変えることができます。

img[フォルダ] には,「photo1.jpg」,「photo2.jpg」,…,「photo12.jpg」 が入っていますが,
このファイル名は適当に付けてあるのではなくて,
月によってロードする外部画像を変えやすいようにそういうファイル名にしてあるのです。

関連性はわかると思います。
得た月番号が0のとき…「photo1.jpg」を表示
得た月番号が1のとき…「photo2.jpg」を表示
  ~ 略 ~
得た月番号が11のとき…「photo12.jpg」を表示
つまり,
得た月番号が X のとき…「photo (X+1) .jpg」を表示
となります。

というわけで,
上で書いたスクリプトをさらに書き替えます。

--------------------------------------
// Date(日付)オブジェクト myDate の作成
myDate = new Date();

// myDate から月の番号を取得して変数 M に代入
M = myDate.getMonth();

// 「gazou_mc」 に imgフォルダ の 「photo(M+1).jpg」 をロード
gazou_mc.loadMovie("img/photo"+(M+1)+".jpg");
--------------------------------------

これで「制御」→「ムービープレビュー」してみます。
すると今(2008年5月)だと,
「photo5.jpg」(ベットがある部屋の写真)がステージいっぱいに表示されると思います。

ここまででしたら,
スクリプト的には3行だけでできるということになります。
また何でしたら,
変数Mなどを使わずに,直接月番号を代入してもかまいません。
このようにした場合,2行(註釈含めて4行)で済みます。

// Date(日付)オブジェクト myDate の作成
myDate = new Date();
// 「gazou_mc」 に imgフォルダ の 「photo(月番号+1).jpg」 をロード
gazou_mc.loadMovie("img/photo"+(myDate.getMonth()+1)+".jpg");

この辺はどちらでも良いと思います。

これで,
弟3段階 「月によってロードする外部画像を変える」 は一応完成です。
パチパチゞ(^o^ゝ)≡(/^ー^)/"""パチパチ



ここまででしたら,大したことはなく簡単と言えば簡単だと思います。
JPEGの用意などを考えると大変かもしれませんが,
スクリプトや構造的には少なくともアナログ時計やデジタル時計を作るより簡単だと思います。
またこの辺くらいまででしたら,
テキスト(文字)でしか回答できないココでも説明は可能です。

なお Flash や JavaScript で取得する年月日や時刻は,
閲覧しているPCの時刻を取得しています。

Windows だと,
モニタ画面の右下に表示されている時刻をダブルクリックしたり,
「スタート」→「コントロールパネル」→「日付と時刻」をダブルクリックしたりすると,
「日付と時刻のプロパティ」が出てきて,年月日や時刻を変えられると思いますから,
ここで「月」を色々変えてみては「制御」→「ムービープレビュー」を繰り返すと,
すべての月の写真が表示できるかどうかの検証ができます。


-----------------------

これに限らず,

「要素を切りわけて部品にする」
   ↓
「1つずつの要素を確実に動作させる」
   ↓
「要素部品を組み合わせる」

これが大切です。
またこれを繰り返して色んなものを作成して行くこと自体が一番の勉強(実力アップ)になります。
    • good
    • 0

日付を判定して表示する画像を確定するだけなのでは・・・?


http://www.google.co.jp/search?q=actionscript%20 …
    • good
    • 0

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