- ベストアンサー
FLASHスクリプトの不具合?
- FLASHスクリプトの不具合について質問です。
- 携帯向け待ちうけFLASHを作成していますが、ランダムと時計のスクリプトを機能させると時計が止まったまま先に進みません。どなたかご教授いただきたいです。
- キャラクターのランダム表示は問題ないと思われますが、時計のスクリプトがうまく機能しないため、不具合が発生しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> FLASHスクリプトの不具合? と書かれていらっしゃいますが, FLASH に不具合があるのでも,スクリプトに不具合があるのでもありません。 FLASHの仕様やスクリプトの意味を理解していない使用者に問題があるのです。 === === === 書かれていらっしゃる【時計のスクリプト】ですが。 その【時計のスクリプト】は フレーム1が表示されたときに1回だけ動作します。 それ以外何も指示をしなければフレーム2の表示に移ります。 フレーム2には gotoAndPlay(1); を書いてあるわけですから フレーム1に戻ります。 フレーム1に戻ると また【時計のスクリプト】が1回だけ動作します。 それ以外何も指示をしなければフレーム2の表示に移ります。 フレーム2には gotoAndPlay(1); が書いてあるわけですから フレーム1に戻ります。 フレーム1に戻ると また【時計のスクリプト】が1回だけ動作します。 それ以外何も指示をしなければフレーム2の表示に移ります。 フレーム2には gotoAndPlay(1); が書いてあるわけですから フレーム1に戻ります。 フレーム1に戻ると また【時計のスクリプト】が1回だけ動作します。 それ以外何も指示をしなければフレーム2の表示に移ります。 ~ 繰り返し 繰り返し… ~ このフレーム1とフレーム2のグルグルループ再生によって 【時計のスクリプト】は 随時随時随時… 時刻を取得する【時計のスクリプト】として動作するわけです。 この原理を無視して ポ~ン と別のフレームに飛ばして再生を止めれば フレーム1の 【時計のスクリプト】 は1回しか動作しないわけですから 随時随時随時… 時刻を取得する【時計のスクリプト】にるはずがありません。 【時計のスクリプト】 が【時計のスクリプト】として動作しないのは 単純にそれだけの理由です。 解決策ですが と言うか Flash Lite 1.1 で時計を作る常識(定石)なのですが, 「時刻を表示させるものやそれを動かすスクリプト」は「ムービークリップの中」に入れます。 具体的には要するに まず,「h」や「m」や「s」という変数名を付けたと思われるテキストフィールドを全て選択して 1つのムービークリップに変換するわけです。 そのムービークリップをダブルクリックするなどしてムービークリップ内の編集に移り, ムービークリップ内のタイムラインを2フレームにして またスクリプトを書くレイヤーも追加して フレーム1 と フレーム2 を空白キーフレームにします。 そして フレーム1の空白キーフレームには【時計のスクリプト】を書いて フレーム2の空白キーフレームには gotoAndPlay(1); を書きます。 これでフレーム1とフレーム2が内部でグルグルループ再生するムービークリップができますよね。 あとはこの「時計ムービークリップ」を好きなところで使用すれば良いということになります。 ちなみに, このようにフレームのグルグルループ再生を利用して時計を作るのは Flash Lite 1.1 のみです。 それより下バージョン, 例えば Flash Lite 1.0 (Flash 4)では fscommand2 が無いのでそもそも時計は作れません。 それ以降のバージョンでは Flash 5 (Player 5) 以上の onClipEvent(enterFrame) イベントハンドラや Flash MX (Player 6) 以上の MovieClip.onEnterFrame イベントハンドラメソッドや Flash CS3 (Player 9) 以上の Event クラスの ENTER_FRAMEイベント などがありますから フレームをグルグルループ再生させる必要はありません。 ↓メインのタイムラインの様子↓
お礼
BlurFiltan様 お礼が遅くなってしまい申し訳ございません。 とてもご丁寧な説明ありがとうございました! 解説用の画像までつけてくださったおかげでわかりやすく ちゃんと時計機能のついた待ちうけを作ることができました。 自分のなかでいまいちムービークリップについて理解しきれていなかったようです・・・。 ですが今回のことでとても勉強になったのでまた挑戦してみたいと思います。 本当にありがとうございました。