カレンダー作りの難しさや手間など全体を 1000 だとすると,
ご質問されている部分の手間や難しさは 1 くらいになります。
ココで説明できるのもその 1 くらいですから,質問としては良いのですが,
その先ができるのかどうかはわかりません。
> どのようなアクションスプリクトで、
> どのように書いたらいいのかわからないので、
たっくさんあります。
結局,思った場所に思った画像を表示させればいいだけです。
思いついたものだけを,大きく分類しても次のようなものがあります。
・タイムラインを動かす
→gotoAndStop()
・ムービークリップのタイムラインを動かす
→MovieClip.gotoAndStop()
・画像入りムービークリップの表示・非表示を変える
→MovieClip._visible プロパティ
・画像入りムービークリップの不透明度を変える
→MovieClip._alpha プロパティ
・JPEGなどを外部からロードする
→loadMovie() or MovieClip.loadMovie()
・同じくJPEGなどを外部からロードする
→MovieClipLoader.loadClip()
・ライブラリからムービークリップを呼びだす
→MovieClip.attachMovie()
・ライブラリからビットマップイメージを呼びだす
→MovieClip.attachBitmap()
・全ての画像入りムービークリップをスライドさせる
→MovieClip._x or MovieClip._y を変える
・HTMLレンダリングしたテキストフィールドに画像を表示
→TextFleld.htmlText = "<img>○○</img>";
・ScrollPaneコンポーネントに画像を表示させる
→ScrollPane クラス
… などなど …
とりあえずカレンダーに限らず Flash で一般的によく使われて,
これくらいはできておかなければならない,
・ムービークリップのタイムラインを動かす
→MovieClip.gotoAndStop();
の方法はいかがでしょうか?
新規ドキュメント(FLA)を作成し,
「0」の絵または写真などを用意して,
ムービークリップに変換します。
そのムービークリップをダブルクリックするなどして,
そのムービークリップ内の編集に入り,
フレーム1 に 「0」 の絵
フレーム2 に 「1」 の絵
フレーム3 に 「2」 の絵
フレーム4 に 「3」 の絵
… …
フレーム5 に 「9」 の絵
という 10フレーム のムービークリップを作成します。
ムービークリップ内のタイムライン(レイヤー)
レイヤー ・・・|●|●|●|●|●|●|●|●|●|●|
0 1 … … … … 9
ここまでできましたら,
ステージ上の何も無い所をダブルクリックするなどして,
シーン1 など メインムービー(_root) の編集に戻ります。
そして,
上で作成したムービークリップ(「0」の絵だけが見えているはず)を選択して,
コピー&ペースト で 4つ と 2つ の合計6個を横に並べます。
「0」 「0」 「0」 「0」 「0」 「0」
各ムービークリップを1つずつ選択して,
ステージ下などにあるプロパティインスペクタでインスタンス名を付けます。
インスタンス名は何でも良いのですが,
たとえば
左から順に「y_mc0」 ,「y_mc1」 ,「y_mc2」 ,「y_mc3」 と 「m_mc0」 ,「m_mc1」 というインスタンス名を付けることにします。
「0」 「0」 「0」 「0」 「0」 「0」
y_mc0 y_mc1 y_mc2 y_mc3 m_mc0 m_mc1
そして,
メインタイムライン(_root)にレイヤーを1つ追加して,
追加したレイヤーのフレーム1の空白キーフレームに次のようなスクリプトを書きます。
-----------------------------------------------
// Dateオブジェクト myDate を作成
myDate = new Date();
// 変数 myY に年を取得
myY = myDate.getFullYear();
// 変数 myM に月(0~11)に1を足した数を取得
myM = myDate.getMonth()+1;
// 年のムービークリップをそれぞれのフレームに進めて停止
for (i=0; i<=3; i++) {
this["y_mc"+i].gotoAndStop(Number(String(myY).substr(i, 1))+1);
}
// m_mc0 をその月の下2桁目のフレームに進めて停止
this.m_mc0.gotoAndStop(Number(("0"+myM).substr(-2, 1))+1);
// m_mc1 をその月の下1桁目のフレームに進めて停止
this.m_mc1.gotoAndStop(Number(("0"+myM).substr(-1, 1))+1);
-----------------------------------------------
ご質問では,
Flash や ActionScript のバージョンを書かれていませんね。
上のスクリプトは,
Flash 5 以上で使用できるスクリプトです。
ActionScriptのバージョンは 1.0 です。
○○.gotoAndStop(Number(String(myY).substr(i, 1))+1);
などがわからない場合は中から順に考えてみてください。
String(myY)
→ 数 2008 を,文字列 "2008" にする。
String(myY).substr(i, 1)
→ 文字列 "2008" から i 番の文字を1文字取ってくる
(文字列番号は 0 が 1文字目です。)
("2008" では 0番が2,1番が0,2番0,3番が8 です。)
Number(String(myY).substr(i, 1))
→ 文字列 "2008" の i 番文字を数値に変換
("2" を 2,"0" を 0, "0" を 0, "8" を 8 に変換)
Number(String(myY).substr(i, 1))+1
→ 文字列 "2008" の i 番文字を数値に変換したものに1を足す
(ムービークリップのフレーム1は0の絵,フレーム2はの絵1,…ですよね。)
gotoAndStop(Number(String(myY).substr(i, 1))+1)
→ 文字列 "2008" の i 番文字を数値に変換したものに
1を足したフレームに gotoAndStop()
年に関しては,for文を使用していますが,
大した行数ではないので,
次のように1文字につき,1行ずつ書いても良いです。
-------------------------------------------------
// 年のムービークリップをそれぞれのフレームに進めて停止
for (i=0; i<=3; i++) {
this["y_mc"+i].gotoAndStop(Number(String(myY).substr(i, 1))+1);
}
-------------------------------------------------
↓同じ意味↓
-------------------------------------------------
// 年のムービークリップをそれぞれのフレームに進めて停止
this.y_mc0.gotoAndStop(Number(String(myY).substr(0, 1))+1);
this.y_mc1.gotoAndStop(Number(String(myY).substr(1, 1))+1);
this.y_mc2.gotoAndStop(Number(String(myY).substr(2, 1))+1);
this.y_mc3.gotoAndStop(Number(String(myY).substr(3, 1))+1);
-------------------------------------------------
月の2文字も同様に考えれば良いと思います。
/////////////////////////////////////////////////////////
上に書いた方法についても少しだけ触れておきます。
・タイムラインを動かす
→gotoAndStop()
これでは,
2008年09月 フレーム
2008年10月 フレーム
2008年11月 フレーム
2008年12月 フレーム
2009年01月 フレーム
… …
と用意しなければならないため,ちょっと(かなり)大変です。
また場合によっては不可能な状況になりますから,
これよりは上の MovieClip.gotoAndStop() の方が良いと思います。
・画像入りムービークリップの表示・非表示を変える
→MovieClip._visible プロパティ
これは,
「0」から「9」という10個のムービークリップ(各ムービークリップ内は1フレームのみ)を用意して,
それを重ねて配置し,
該当年や月のムービークリップだけを表示させるという方法です。
その他も,結局同じような感じで考えて行けばできます。
この年や月の数字画像を表示することよりも,
カレンダー本体の方が難しいですよ。
また,ココでは説明できないと思います。
お礼
BlurFiltan様 丁寧な解説ありがとうございます! アドバイスとても助かりました。 MovieClip.gotoAndStop() でチャレンジしてみます。 本当にアドバイスありがとうございました!