• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:携帯待受でカウントアップを作りたい)

携帯待受でカウントアップを作りたい

このQ&Aのポイント
  • FLASHさわり初めて半年の超初心者です。flashlite1.1で携帯のフラッシュ待受を作成中です。
  • カウントアップを表示したいのですが参考資料が少なく困ってます。
  • カウントアップの作成方法を優しくご教授くださる方がいらっしゃいましたらよろしくお願いします!

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1です。 > 具体的な記述をいただけるとありがたいです ということで, 新規ドキュメントを作成して, ステージ上に「count_txt」というインスタンス名のダイナミックテキストを作成します。 (この意味がわからない場合は,下の図↓を参照のこと。) (お持ちのバージョンがわからなかったので勝手に Flash 8 の画面にしています。) アクション用のレイヤーを1つ追加して, そのレイヤーのフレーム1に次のスクリプトをコピペします。 -------------------------------------------- // 結成日の時刻オブジェクトを作成(例 2008年10月10日) KesseiDate = new Date(2008, 9, 10); // 結成日の絶対時刻を取得(単位 ミリ秒) KesseiJikoku = KesseiDate.getTime(); // 1フレーム進む時間毎に随時実行 this.onEnterFrame = function() { // 今の時刻オブジェクトを作成 ImaDate = new Date(); // 今の絶対時刻を取得(単位 ミリ秒) ImaJikoku = ImaDate.getTime(); // 今の時刻と結成日の時刻との差を求める(単位 ミリ秒) SaJikan1 = ImaJikoku-KesseiJikoku; // その時刻の差から「日」を整数で求める Hiniti = Math.floor(SaJikan1/(24*60*60*1000)); // 時刻の差から「日」を引いた時間を取得 SaJikan2 = SaJikan1-Hiniti*(24*60*60*1000); // その時間から「時」を整数で求める Jikan = Math.floor(SaJikan2/(60*60*1000)); // その時間から「時」を引いた時間を取得 SaJikan3 = SaJikan2-Jikan*(60*60*1000); // その時間から「分」を整数で求める Hun = Math.floor(SaJikan3/(60*1000)); // count_txt に 「結成から○日と○時間○分」 を表示 count_txt.text = "結成から"+Hiniti+"日と"+Jikan+"時間"+Hun+"分"; }; -------------------------------------------- これでパブリッシュすればできあがりです。 なお最初の行ですが, // 結成日の時刻オブジェクトを作成(例 2008年10月10日) KesseiDate = new Date(2008, 9, 10); 10月10日 なのに 9, 10 になっていますが, これは書きまちがいではありません。 月の数字は 0 から始まります。 1月… 0 の月 2月… 1 の月 3月… 2 の月 4月… 3 の月 5月… 4 の月 6月… 5 の月 7月… 6 の月 8月… 7 の月 9月… 8 の月 10月… 9 の月 11月… 10 の月 12月… 11 の月 したがって, 2008年10月10日を表したい場合は 2008, 9, 10 となります。 もし, 2009年1月27日を表したい場合は 2009, 0, 27 となります。

hiropanman
質問者

お礼

とても細かく説明いただき本当にありがとうございます!! ご指示通りにやってみましたら、希望通りの表示ができました。 本当にありがとうございました! 今はなんとなく仕組みがわかる程度なのですが 例えば指定日が2008/3/22の場合【0年10ヶ月6日目】という風に 年月に換算した表示はやはりできないのでしょうか? 上記の方法では指定日から現在までを月や年に換算することは できないように思いますしfscommand2で年月日を取得した場合も 1日~21日までと22日以降の場合でカウントの仕方を変えたりと 果てしないように思います。 記述の仕方はわからないのですが 例でいえば【現在日時が22日になった日】の回数を○ヶ月に反映し その回数を12で割って、切捨てて年に換算することはできますか? また次の【22日】までを単純に24時間ごとにカウントできれば 月の日数に関係なくカウントアップできると思うのですがどうでしょうか? 人間の心理に沿った数え方がイチバン理想なので、 これからも勉強しつつ考えていきたいと思います。 本当にありがとうございました!!

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

Flash Lite 1.1 では Dateクラス がないのでかなり難しいです。 Flash 5 以降に登場した Dateクラス(Dateオブジェクト) を使うと 絶対時刻(1970年1月1日0時からのミリ秒数)が取得できます。 これでカウントアップ開始と今の2つの絶対時刻を取得して 2つの時刻の差を求めればカウントアップ開始から今の間のミリ秒数が求められるので, そのミリ秒数を日数換算すれば終わりです。 しかし Flash Lite 1.1 では fscommand2("○○") で, 年の数,月の数,日の数,時の数,分の数 などが単体で得られるだけです。 これをカウントアップに使う,つまり2つの時刻の差の日数取得に使うにはそうとう苦労します(普通は諦めるかも)。 たとえば, 年は 365日 と決まっているわけではありません。 西暦で4の倍数の年は閏年で366日になります。 さらに4の倍数の年であっても100の倍数の年は閏年になりません。 さらに4の倍数の年で100の倍数の年であっても400の倍数の年は閏年になります。 月の数も30日とは単純計算できません。 1月1日と3月3日の間の日数を求めるのですらかなり難しいということになります。 しかし「不可能!」というわけではありません。 私は頭がまわりませんのでご参考に↓。 ケータイFlash講座第一回:カレンダーの作り方 http://flamo.jp/pc/lecture/index.php  

hiropanman
質問者

お礼

参考URLまで教えていただいてありがとうございます。 最後まで読みましたが理解できませんでした。 アドバイスをいただきflashlite2.0で作る事にしました。 絶対時刻の取得はなんとかできたのですが 指定日からの換算方法がわかりませんでした。 お時間ありましたら具体的な記述をいただけるとありがたいです。

hiropanman
質問者

補足

BlurFiltanさんがおっしゃってることはおそらく http://okwave.jp/qa863385.html に書いてある内容の応用だと思いますが、 こちらを読んでもわかりませんでした。。。。

すると、全ての回答が全文表示されます。

関連するQ&A