トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     Monthを取得して、月ごとに異なるフレームへ飛ばすには
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
watase_
Åê¹ÆNo.11984
投稿日時: 2004-11-4 16:28
新米
居住地:
投稿: 9
使用環境:
WinXP,Flash MX
Monthを取得して、月ごとに異なるフレームへ飛ばすには
初めまして。新米です。どこが違って動かないのかどうしてもわかりません。
宜しくお願いします。 WinXPで flash MXを使用しています。

いわゆるカレンダーを設置したく、月ごとに異なる図をフレームごとに振り分けて設置しました。
1フレーム目でMonthを取得して、現在の月に応じたフレームへ飛ばしたいのですが、
なぜか真っ白のまま何も表示されません。

1フレーム目 下記のスプリクトを記述
2?3フレーム目 真っ白(何も配置していない)
4フレーム目 4月のカレンダー
5フレーム目 5月のカレンダー
・・・
・・



記述したスプリクトは以下の通りです。

// Dateオブジェクトによる月の取得
now = new Date();
nowMo=now.getMonth();
// 取得月によって開始フレームを指定
if (nowMo==4) {
this.gotoAndStop(4);
} else if (nowMo==5) {
this.gotoAndStop(5);
} else if (nowMo==6) {
this.gotoAndStop(6);
} else if (nowMo==7) {
this.gotoAndStop(7);
} else if (nowMo==8) {
this.gotoAndStop(8);
} else if (nowMo==9) {
this.gotoAndStop(9);
} else if (nowMo==10) {
this.gotoAndStop(10);
} else if (nowMo==11) {
this.gotoAndStop(11);
} else if (nowMo==12) {
this.gotoAndStop(12);
} else if (nowMo==1) {
this.gotoAndStop(13);
} else if (nowMo==2) {
this.gotoAndStop(14);
} else {
this.gotoAndStop(15);
}

以上です。thisはむしろいらないかとも思いましたが、念のため。
あと、if文の作り方ももっと効率の良いものができそうな気もするのですが、スプリクトに強くないのでこんな状態です。
なにかよい方法があればそれも教えていただけたらと思います。
ひろゆき
Åê¹ÆNo.11986
投稿日時: 2004-11-4 16:38
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: Monthを取得して、月ごとに異なるフレームへ飛ばすには
1フレーム目をキーフレームにして、
this.stop();
now = new Date();
nowMo = now.getMonth()+1;
if (nowMo < 4) {
	numFrame = nowMo+12;
} else {
	numFrame = nowMo;
}
this.gotoAndStop(numFrame);
でいかがでしょう?
野中文雄
Åê¹ÆNo.11987
投稿日時: 2004-11-4 16:53
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: Monthを取得して、月ごとに異なるフレームへ飛ばすには
確認は、ブラウザでされているのでしょうか?

メインのタイムライン第1フレームのスクリプトは、第1フレームの描画が行われるよりも前に処理されます。つまり、フレームに配置されるほとんどのエレメントがロードされる前です。

第1フレームアクションが処理されたとき、指定フレームのエレメントはロードが間に合わず、開店前の「準備中」かもしれません。ActionScriptは移動先フレームが「準備中」であれば、エラーも出さずに無視します。つまり、フレーム移動自体行われません。
引用:
watase_さんは書きました:
1フレーム目でMonthを取得して、現在の月に応じたフレームへ飛ばしたいのですが、
なぜか真っ白のまま何も表示されません。

1フレーム目 下記のスプリクトを記述
2?3フレーム目 真っ白(何も配置していない)
...[中略]...
// Dateオブジェクトによる月の取得
now = new Date();
nowMo=now.getMonth();
// 取得月によって開始フレームを指定
if (nowMo==4) {
    this.gotoAndStop(4);
} else if (nowMo==5) {
    this.gotoAndStop(5);
    // ...[中略]...
} else {
    this.gotoAndStop(15);
}


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

ひろゆき
Åê¹ÆNo.11988
投稿日時: 2004-11-4 17:12
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: Monthを取得して、月ごとに異なるフレームへ飛ばすには
SA Flash Player で確認すると、表示されませんね。
ブラウザでは表示されました。

1フレーム目ではなくて、2フレーム目のキーフレームに、
スクリプトを記述すると、SA Flash Player でも表示されました。
ご参考まで。
watase_
Åê¹ÆNo.12015
投稿日時: 2004-11-5 9:52
新米
居住地:
投稿: 9
使用環境:
WinXP,Flash MX
ありがとうございました、解決です!
ありがとうございました。正しく動かすことができました。
原因は、どうやらスプリクトを1フレーム目に記述していたためのようで、2フレーム目に記述すると動きました。
ついでに、Monthに+1を記述していないことも、正しい表示をさせるために必要なことがわかりました。

ひろゆき 様。
スプリクトを、提案いただいた短いものに書き直してみましたが、まずは改善のないまま失敗に終わりました。
しかし、新たなメッセージを見てスプリクトを2フレーム目に移してみたところ、すんなりうごきました
ありがとうございます。


野中文雄 様。
ありがとうございました。
スプリクトの「月を取得する」という部分を抜いて記述すると、正しく動作することは確認していました。
ブラウザでも確認済みでした。(その旨、記述すべきでしたすみません)
でも、ジャンプした先のフレームロードが間に合わないとき無視してしまう要素があるとは知りませんでした。今後の参考にさせていただきます。

---------------------------
ところで、これまで
now = new Date();
nowMo = now.getMonth();
だった記述のMonth()の部分に+1を加えてはじめて、正しい月が表示されることを知りました。そうでなければスプリクトは11月なのに10月を返してしまうようです。
なぜでしょう?getMonth()だけでは正しく取得できない(月がひとつ若い)のはあたりまえのことでしょうか?
kisii
Åê¹ÆNo.12016
投稿日時: 2004-11-5 10:03
常連
居住地:
投稿: 122
使用環境:
WinXP
FlashMX2004Pro
Re: 私も常々疑問でした
私もgetMonth()で月から1引いた値が出てくるのは疑問でしたが、ActionScriptのヘルプをみると、

引用:
指定された Date オブジェクトの月 (1 月は 0、2 月は 1 など) をローカル時間で返します。ローカル時間は、Flash Player を実行しているオペレーティングシステムによって決まります。


とあるので、仕様だと思います。
JavaScripでも同様の動作を示しますので、実はScript関係では当然のことなのかもしれません
cheer
Åê¹ÆNo.12045
投稿日時: 2004-11-5 20:08
新米
居住地:
投稿: 3
使用環境:
WinXP
MX2004 Pro
Re: 私も昔疑問でした
+1しないと正しい月にならないというのは、ちょっとちがいます。

日本だと1月・2月というように1から数えますが、海外(少なくとも英語圏)だと0から数字を数えます。
February、Januaryと月の呼び方に数字が入らないですし。

なので、0番目の月・1番目の月・・・と0から数えた月数が返ってきます。
スクリプトやプログラムは、だいたいそうなっています。

私も昔、最初から+1した数返してくれよー!いちいち足すの面倒だよーと思ってました。
kisii
Åê¹ÆNo.12052
投稿日時: 2004-11-6 9:23
常連
居住地:
投稿: 122
使用環境:
WinXP
FlashMX2004Pro
Re: 疑問氷解です
なるほど、ColdFusionなら1月は1で返ってくるのに、Flashはプラス1しないといけないのは、いつもごっちゃになって面倒だとおもっていたのですが、
これで疑問解決です。
cheerさん、教えてくださってありがとうございました!
future
Åê¹ÆNo.12053
投稿日時: 2004-11-6 11:29
新米
居住地: 冥王星
投稿: 18
使用環境:
Re: 私も昔疑問でした
いや、海外でも普通に1から数えると思いますよ。
引用:
日本だと1月・2月というように1から数えますが、海外(少なくとも英語圏)だと0から数字を数えます。
ひろゆき
Åê¹ÆNo.12153
投稿日時: 2004-11-9 11:13
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 私も昔疑問でした
getMonth() と同様に、getDay() でも、0 からですよね?
配列から文字列を引き出すのには、その方が便利ではないですか?
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops