• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FLASHで日数カウントダウンの後、本日開催の画像を出したい。)

FLASHで日数カウントダウン後、本日開催の画像を出す方法

このQ&Aのポイント
  • FLASHを使用して、10月4日のイベントまでの日数カウントダウンを行い、当日になったら「本日開催」の画像を表示したい。
  • カウントダウンスクリプトの一部が正常に動作せず、画像を挿入すると動作しない。
  • 対策としては、2フレーム目にテキストを直接入力する方法があるが、画像を表示させる方法を知りたい。

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

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

#1 です。 > タイムラインの階層は一階層です。 そういうことですか。 書かれていらっしゃるスクリプトには 意味無く(必然性がなく) 「this」 があったり 「_root」 があったり 「ターゲットパスなし」 があったりするので, 「このスクリプトは一体どこに書いたんだ~~???」 と思ってしまいました。 _root の フレーム1 に書いたスクリプトであり,なおかつ, _root のフレーム2 に単なるテキストを置いたときは _root のフレームが フレーム2 に移動するのに, _root のフレーム2 にビットマップ画像などある程度ファイル容量があるものを置いたときにのみ _root のフレームが フレーム2 に移動しない。 ということでしたら, カウント や _currentframe などは一切関係せず, -------------------------------- //カウントダウン// this.stop(); _root.gotoAndStop(2); -------------------------------- ↑これだけでも _root のフレームは フレーム2 に移動しないと思います。 Flash は,メモリに読み込まれていないフレームには進めないのですよ。 メモリに読み込まれていないフレームに強引に進めようとすると, 真っ白の画面で止まる とか 部分的に何かが表示されるけどそのまま動かなくなってしまう という現象が起きます。 そのためによく見る 「NowLoading....」 のようなものが存在するのです。 「NowLoading....」 のような見た目の演出を付けないでも良いとする場合, 次のようにスクリプトを変更すると, おそらく _root の フレーム2 の 画像が表示されると思います。 --------------------------------------- //カウントダウン// this.stop(); // 1フレーム進む時間毎に毎回実行 this.onEnterFrame = function() { // もし _root の読み込みバイト数が全バイト数に達したとき if (this.getBytesLoaded>=this.getBytesTotal) { // --- 以下書かれていらっしゃるそのまま ------- dtObj = new Date(); mm = dtObj.getMonth()+1; dd = dtObj.getDate(); month7 = 31; month8 = 31; month9 = 30; eventDay = 4; if (mm == 7) { totalDay = eventDay+month7+month8+month9; } else if (mm == 8) { totalDay = eventDay+month8+month9; } else if (mm == 9) { totalDay = eventDay+month9; } else { totalDay = eventDay; } _root.dayCount = totalDay-dd; trace(_currentframe+1); //カウントが0になったら// if (_root.dayCount == 0) { _root.gotoAndStop(_root._currentframe+1); } // --- 以上書かれていらっしゃるそのまま ------- // ↓これは場合によっては不要 delete this.onEnterFrame; } }; --------------------------------------- つまり, ロード待ちをして,SWFがロード完了次第,フレーム2 に進めるということです。

aloe344
質問者

お礼

ご丁寧に教えていただきありがとうございます!! おかげ様で解決できました。 とっても勉強になりました。動作確認もできました。 フラッシュはとても奥深いのですね。これを機会にもっともっと勉強していかねばと思いました。 本当にありがとうございました!

その他の回答 (1)

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

> これなのですが、 「これなのです」では普通は通じませんよ。 いったい "どこ" に書いたスクリプトなのでしょうか? > 2フレーム目にテキストなどを いったい "どこ" の2フレーム なのでしょうか? > テキストなどを直接入力すると上手く動作するのですが、 > 画像を挿入すると動作しません。 コレに関しては何を書かれているのか全く意味がわかりません。 テキストを直接入力する? 画像を挿入する? 何のことかわかりません。 上記引用文の3つ目の意味は,わからないままでもとりあえず良いです。 1つ目と2つ目の "どこ" が非常に重要です。 おそらくこの "どこ" を重要視されていないので, ご質問でも一切書かれていない上, スクリプトが正常動作しないのではないかと思います。 > _root.gotoAndStop(_currentframe+1); このスクリプトで gotoAndStop を動作させるのは メインのタイムラインである 「_root」 です。 一般的に書くと,   _root.gotoAndStop(○○);   →「_root」のフレームを○○に進めて停止 です。 ○○ の部分に _currentframe+1 が入っていますが, この 「_currentframe」 は 「スクリプトを書いた階層のタイムラインの現在表示フレーム」 です。 「_root」 のフレームをどこかに進めるために, 「スクリプトを書いた階層のタイムラインの現在表示フレーム」 が何か関係するのでしょうか? 関係するかしないかは作成者でないとわかりません。 もし関係なく, 「_root」 を 「_rootの現在表示フレーム + 1」に進めたいのでしたら, _root.gotoAndStop(_root._currentframe+1); のようにすべきだと思います。 だから "どこ" であるのかが非常に重要で無視できない項目になります。 「ターゲットパス」 http://homepage3.nifty.com/ginga-b/MX/targetpath.html ↑ActionScript(1.0 と 2.0 )を書く上での最々重要事項です。

aloe344
質問者

補足

ご回答ありがとうございます。 質問の仕方が悪くて申し訳ありません。 タイムラインの階層は一階層です。 <1フレーム目> 「あと__日」となるように、 ダイナミックテキストを配置し変数に「dayCount」を指定しています。 その上のレイヤーに先に書いたスクリプトを記述しています。 <2フレーム目> 開催日の画像を配置しています。 この書き方で伝わりますでしょうか・・・。 説明するのに最適な用語が分からず伝わらなかったら申し訳ありません。 >テキストを直接入力する? >画像を挿入する? この2フレーム目にテキストツールで「本日開催」と書き込み、書き出しすると、「あと0日=開催日」にテキストで「本日開催」と出ます。 しかし、本日開催をデザインした画像を配置した場合に画像が表示されないのです。 どうしても画像を配置しないといけないため、そういったテキストを配置する場合と、画像を配置する場合の違いがあるのかと思い質問させていただきました。 宜しくお願いいたします。

関連するQ&A