No.1ベストアンサー
- 回答日時:
1つの形しか提示できませんが,実際は色んな形が考えられます。
発展や応用は色々と考えてみてください。
新規ドキュメント作成で,
ステージ上に "ダイナミックテキスト" のテキストフィールド を用意します。
文字の色は黒などステージの背景色以外の色にして,
たくさん文字が入るように少し横長にしておいてください。
そして,そのダイナミックテキストを選択した状態で,
下のプロパティインスペクタを表示させて,"インスタンス名" を付けます。
この説明では,「eventName」 というインスタンス名を付けたとしておきます。
そして,
新規でレイヤーを追加して,2レイヤーにします。
□ レイヤー 筆・・|○| ←新規で作ったレイヤー
□ レイヤー 筆・・|●| ←「eventName」がある
その新規で作ったレイヤーを ActionScript 専用レイヤーと頭の中で決めておいて,
そのレイヤーのフレーム1を選択し,
下のアクションパネルを表示させて,
そのアクションパネルに次のようなスクリプトを書きます(コピペ可能)。
------------------------------------
// イベントデータ配列 eventArr を作成
var eventArr = new Array();
//
// イベント日とイベント名を用意(2次元配列※可変)
eventArr.push(["2007/6/19", "雨まつり"]);
eventArr.push(["2007/6/20", "雨まつり"]);
eventArr.push(["2007/6/21", "雨まつり"]);
eventArr.push(["2007/6/22", "雨まつり"]);
eventArr.push(["2007/7/15", "海で遊ぼう"]);
eventArr.push(["2007/7/16", "海で遊ぼう"]);
eventArr.push(["2007/7/17", "海で遊ぼう"]);
eventArr.push(["2007/8/13", "盆まつり"]);
eventArr.push(["2007/8/14", "盆まつり"]);
eventArr.push(["2007/8/15", "盆まつり"]);
eventArr.push(["2007/8/16", "盆まつり"]);
// 定形文字列 finite の設定(※可変)
var finite = " 申し込み期間中です!";
//
// 変数 eventLen に配列の要素数を取得
var eventLen = eventArr.length;
// ☆ちょっと検証(本番は不要)
trace("イベント数="+eventLen);
//
// 今の時刻オブジェクトを作成
var nowDat = new Date();
// 年の取得
var now_y = nowDat.getFullYear();
// 月の取得
var now_m = nowDat.getMonth()+1;
// 日の取得
now_d = nowDat.getDate();
// 今日の日付文字列を作成
var today = now_y+"/"+now_m+"/"+now_d;
// ☆ちょっと検証(本番は不要)
trace("今日="+today);
//
// テキストフィールド eventName に表示の初期化
eventName.text = "";
//
// イベント数の回数ループ
for (var i = 0; i<eventLen; i++) {
// eventArrの0番要素と today の文字列が等しいとき
if (eventArr[i][0] == today) {
// その 1番要素を テキストフィールド eventName に表示
eventName.text = eventArr[i][1]+finite;
}
}
------------------------------------
そして,
「制御」→「ムービープレビュー」してもらうと,
できたものや, trace 関数で出力される確認用データなどが表示されると思います。
Flash の時刻(日付)取得は,ローカルPCの時刻(日付)です。
パソコンの日付を変更すると,Flash で取得する時刻(日付)も変わるので,
色んな日でちゃんとデータが表示されるかどうか実験できます。
2次元配列のデータも同じ形で違う内容に変えてもらうと,データも自作可能です。
数も自由です。
//////////////////////////////////////////////////////
~ その他補足 ~
◎ getMonth について
getMonth() で得られる月は,0月から始まります。
日本人の方がデータを作成しやすいように,
var now_m = nowDat.getMonth()+1;
でわざと 1 を加算して取得しています。
◎ 配列について
配列の要素(エレメント)番号も0番から始まります。
上の場合例えば,
eventArr[0][0] は "2007/6/19" です。
eventArr[0][1] は "雨まつり" です。
eventArr[4][0] は "2007/7/15" です。
eventArr[4][1] は "海で遊ぼう" です。
順次そういう感じで認識してもらうとプログラムやデータが理解できると思います。
配列を使わずに,普通の変数群を大量に用意してもかまいませんが,
配列にした方が .length で要素数が取得できたり,
[日付,イベント名] のようにデータをペアで扱えるので使い勝手が良いため配列でデータを用意しています。
2次元配列は,簡単に言うと Flash 内に Excel の表を用意したようなものです。
Excel など表計算ソフトはデータを2次元平面に表すソフトですよね。
Excel で,あるシートに,
A列 B列
1 2007/6/19 雨まつり
2 2007/6/20 雨まつり
3 2007/6/21 雨まつり
4 2007/6/22 雨まつり
5 2007/7/15 海で遊ぼう
6 2007/7/16 海で遊ぼう
7 2007/7/17 海で遊ぼう
8 2007/8/13 盆まつり
9 2007/8/14 盆まつり
10 2007/8/15 盆まつり
11 2007/8/16 盆まつり
というデータを用意しておいて,
------------------------------------
Sub ShowEvent()
' 定形文字列 finite の設定(※可変)
finite = " 申し込み期間中です!"
' 変数 eventLen にアクティブシートA列の最終行数を取得
eventLen = ActiveSheet.Range("A65536").End(xlUp).Row
' ☆ちょっと検証(本番は不要)
MsgBox ("イベント数=" & eventLen)
' 今日の日付を取得
today = Date
' ☆ちょっと検証(本番は不要)
MsgBox ("今日=" & today)
' C列の1行を空白に
ActiveSheet.Cells(1, 3) = ""
' イベント数の回数ループ
For i = 1 To eventLen
' A列のi行 と today が等しいとき
If ActiveSheet.Cells(i, 1) = today Then
' C列の1行 に B列のi行 の値を代入
ActiveSheet.Cells(1, 3) = ActiveSheet.Cells(i, 2) & finite
End If
Next i
End Sub
------------------------------------
というマクロを実行させているのと同じようなことです。
言語や仕様や外観が違うだけで,やっていることはほとんど同じですね。
また,上の例では使っていませんが,
データが表形式なので,ソートや削除(上にシフト)などなども簡単になります。
って,Excel を持ち出した方がややこしかったでしょうか...?
◎ その他応用
上ではテキストのデータを変えているだけですが,
シンボルとしてイベントごとのムービークリップを用意しておいて,
ある日付になるとその日付用のムービークリップを attachMovie() する方法なども考えられます。
「リンケージとは?」
http://www.1art.jp/flash2/chapter/33/33.htm
また,「NowLoading...」さえ付ければ,
日付に応じてメインムービー(_root)や,ムービークリップのフレーム移動(gotoAndStop())も可能です。
とにかく,
同じ原理で無数に色々なことはできますから,
色々考えてみてください。
この回答へのお礼
お礼日時:2007/06/22 20:44
ありがとうございます!!
無事できました。
スクリプトをじっくり一つ一つ見てみてるとなるほどって感じでした。
いろいろ研究してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
既存画像(gif または png)の背...
-
ホームページビルダーを複数の...
-
FFFTPでサーバに新規フォルダが...
-
ホームページビルダーのプレビ...
-
ホームページビルダー19文字化け
-
ホームページビルダー15で作っ...
-
HTMLリンク飛びがうまくいかない
-
jQueryで画面サイズによってス...
-
ホームページビルダー22でリン...
-
ドリでテンプレートが反応しな...
-
ビルドとリビルドの違いを教え...
-
エクセルの数式について教えて...
-
ウィンドウズ11にしたら背景画...
-
CGIが実行可能なHP領域又はレン...
-
パスワードつきホームページ ト...
-
エクセルの表を作ってるんですが
-
クロムOSでhtmlを作成したい
-
無料で使えるホームページを教...
-
ホームページを作ろうかと
-
メールフォーム設置の文字化け...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の要素番号を取得するには?
-
変な質問ですみません、n番目の...
-
VB.NET の配列の要素数
-
DataGridでCTRLキーを押さずに...
-
IDの自動採番について
-
VB6 複数行のテキストをリスト...
-
Vba 配列の中の特定文字列の位...
-
[Objective-c]多次元配列のアク...
-
重複しない乱数整数を発生させる。
-
VBでボタンを押すと画像をラン...
-
ヒープソートの問題について
-
重複しない乱数を作り配列に入...
-
ランダムに数字を並び変える方法は
-
重複しない乱数の生成
-
画像を横に無限スクロールする件で
-
ActionScriptで配列をクリアす...
-
構造体配列のサイズ
-
簡単な当たり判定作りたい
-
複数の異なる結果を表示するラ...
-
FLASHでXMLを読み込んだときに...
おすすめ情報