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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   とにかくFLASH【FLASHに関して全般】
     カウントダウンで予定日を外部テキスト化したい
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ecoeco
Åê¹ÆNo.28154
投稿日時: 2006-8-24 15:47
新米
居住地:
投稿: 6
使用環境:
MacOS10.4,Flash MX2004
カウントダウンで予定日を外部テキスト化したい
作業環境:MacOSX/FlashMX2004

予定日まで「あと○○日」と表示するFLASHで、
その予定日を外部テキスト化したいのですが、
うまくいかず悩んでいます。

現在、外部化しない状態では正常に動いています。
_rootにダイナミックテキスト「event_day」をつくり、
asレイヤーのフレームアクションに以下スクリプトを設定しています。
/*---------------------------------------------*/
date_obj = new Date();

today_year = date_obj.getFullYear();
today_month = date_obj.getMonth();
today_date = date_obj.getDate();

eventUTC = Date.UTC( 2006 , 7 , 31 );

todayUTC = Date.UTC( today_year , today_month , today_date );
event_day = ( eventUTC - todayUTC )/1000/60/60/24;

if(event_day==0){
_root.gotoAndStop("sample1");
}else if(event_day==1){
_root.gotoAndStop("sample2");
}
/*---------------------------------------------*/

これを外部化しようとしたのですが、うまくいかず、
http://book.mycom.co.jp/support/e5/actionscript10/
こちらのサイト「9-07」から参考にFLAファイルをダウンロードし、
以下のようにスクリプトを変更してみたところ、
これでパブリッシュすると非数「NaN」と表示されてしまいます。

/*---------------------------------------------*/
System.useCodepage = true;
_root.loadVariables("date.txt");
_root.onData = function() {
y = input_date.substr(0, 4);
m = input_date.substr(5, 2);
d = input_date.substr(8, 2);
toDay = new Date();
theDay = new Date(y, m-1, d);
days = Math.ceil((theDay.getTime()-toDay.getTime())/(24*60*60*1000));
};
/*---------------------------------------------*/
↑このASでパブリッシュする際は
ダイナミックテキストの変数名をこのサンプルに合わせて「days」にしました。

原因がお分かりでしたら
是非ご教授くださいませ。
Tonpoo (gaienboy改め)
Åê¹ÆNo.28157
投稿日時: 2006-8-24 16:24
職人
居住地: 東京・神宮前
投稿: 717
使用環境:
Windows 7 Professional,
Flash CS5 Pro,
Flash Player 10,1,102,64
Re: カウントダウンで予定日を外部テキスト化したい
gaienboyといいます。こんにちは。
引用:
ecoecoさんは書きました:以下のようにスクリプトを変更してみたところ、
これでパブリッシュすると非数「NaN」と表示されてしまいます。

date.txtの内容がどう書いてあるのかわからないので、もしかしたら
ハズしてるかもしれませんが、変数y,m,dが文字列として扱われて
いるのではないでしょうか?下記のようになってみるとどうなるでしょう?
/*---------------------------------------------*/
System.useCodepage = true;
_root.loadVariables("date.txt");
_root.onData = function() {
	y = parseInt(input_date.substr(0, 4));
	m = parseInt(input_date.substr(5, 2));
	d = parseInt(input_date.substr(8, 2));
	toDay = new Date();
	theDay = new Date(y, m-1, d);
	days = Math.ceil((theDay.getTime()-toDay.getTime())/(24*60*60*1000));
};
/*---------------------------------------------*/


----------------
Tonpoo (a.k.a. gaienboy)
Tonpoo.com / TONPOOBLOG / twitter@tonpootwit

ecoeco
Åê¹ÆNo.28159
投稿日時: 2006-8-24 17:03
新米
居住地:
投稿: 6
使用環境:
MacOS10.4,Flash MX2004
Re: カウントダウンで予定日を外部テキスト化したい
ご返信有り難うございます。

外部テキストは
input_date=2006/9/14
となっています。

教えていただいたasをそのまま貼付けてパブリッシュしてみたところ、
NaNは表示されなかったのですが、何故か外部テキスト
「input_date=2006/9/14」で「残り11日」と表示され、
「input_date=2006/10/14」で「残り51日」
と表示されてしまいます

原因分かる方いらっしゃいますでしょうか・・。

Tonpoo (gaienboy改め)
Åê¹ÆNo.28162
投稿日時: 2006-8-24 17:29
職人
居住地: 東京・神宮前
投稿: 717
使用環境:
Windows 7 Professional,
Flash CS5 Pro,
Flash Player 10,1,102,64
Re: カウントダウンで予定日を外部テキスト化したい
こんにちは。gaienboyです。引用:

ecoecoさんは書きました:
外部テキストは
input_date=2006/9/14
となっています。

変数y,m,dは、それぞれ変数input_dateの文字列の中の決まった
位置から値を引っ張ってきてますよね?例えば、

input_date.substr(5, 2)

これは、「変数input_dateの5文字目から2文字分を返す」という
ことになるわけです。なので、
input_dateの値が「2006/9/14」なら「9/」
input_dateの値が「2006/10/14」なら「10」
が返ってきてしまいます。このように、月や日の桁数が違って
しまうと、意図しない結果になってしまうので、日付の表記を
「YYYY/MM/DD」形式にするといいと思います。

×:2006/9/3
○:2006/09/03

もしくは、input_dateを「/」で区切って配列に入れて・・・
っていう手もありますが。


----------------
Tonpoo (a.k.a. gaienboy)
Tonpoo.com / TONPOOBLOG / twitter@tonpootwit

ひろゆき
Åê¹ÆNo.28163
投稿日時: 2006-8-24 17:36
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: カウントダウンで予定日を外部テキスト化したい
スクリプトの転載はしてもよいものなのでしょうか?
書籍などのサンプル・ソースに関する扱い について、
笠居さんが述べられているので、確認してください。

転載してよいものかどうか不明なので、直接スクリプトを触れません...。
String.substr をヘルプなどで確認しましょう。
「input_date=2006/9/14」ではなく「input_date=2006/09/14」とする必要があるでしょう。


「input_date=2006/9/14」のままでやるのであれば、別の方法もありですね。
_root.onData は、どうも良くない気もするので、LoadVars を用いる方法で。
System.useCodepage = true;
var date_lv = new LoadVars();
date_lv.onLoad = function(success) {
	if (success) {
		var date_array = this.input_date.split("/");
		var y = Number(date_array[0]);
		var m = Number(date_array[1]);
		var d = Number(date_array[2]);
		//以下、y, m, d を処理するスクリプト
	}
};
data_lv.load("date.txt");


LoadVars.loadで読み込む」も、参考まで。


----------------
質問する際は、回答者に具体的な情報を与えてください。

ecoeco
Åê¹ÆNo.28190
投稿日時: 2006-8-25 11:45
新米
居住地:
投稿: 6
使用環境:
MacOS10.4,Flash MX2004
Re: カウントダウンで予定日を外部テキスト化したい
有り難うございました!
無事解決いたしました。

大変お世話になりました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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