- ベストアンサー
時計がついたスライドショーが作りたい
スクリーンセーバーが作りたくて、suzukaでスライドショーを作ったのですが、 デジタル時計も一緒に表示しようとしててこずっています。 1フレーム目に時計のスクリプトを書いて、2フレーム目で1にジャンプするようにしたら、 スライドショーが動かなくて・・・ スライドショーを動かしつつ、時計も動かす何かいい方法はないでしょうか? ひとつのキーフレームだけ繰り返したりは出来ないのですか? まだ初心者なので上手く説明できませんが、よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
単純に時計をスプライト内に作れば良いだけでしょう。 (=スプライト内で完結する時計を作れば良いだけでしょう。) 別にそうしなくても良いですよ。 スライドショーをスプライト内に作っても良いですし スライドショーも時計も両方とも別のスプライト内に作っても良いです。 とにかく何にしても Flash とは「まず スプライト(ムービークリップ) ありき」なんです。 (メインのタイムライン自体も実は全体を包括する大きなスプライト(ムービークリップ)です。) Flash とはスプライト(ムービークリップ)をいくつも組み合わせて1つの作品を作って行くもの(作って行けるもの)なのです。 ===例============ 仮の条件として SWF6~8 のいずれかの Flash(SWFファイル) を書き出すものとします(SWF4 は無視)。 Suzuka の シンボルリスト のリスト欄を右クリックして 「アイテムを追加」→「スプライト追加」を選択します。 スプライト名は 「スプライト1」でも何でも適当で良いです。 サイズもどうでも良いですが 一応 幅[100] 高さ[20] に設定することにしておきますか。 シンボルリストで今作ったスプライトを選択し シンボルリストの左上の方にある「編集」ボタンをクリックします。 するとキャンバスの部分は スプライト内のタイムライン表示に切り替わります。 (スプライト内にもタイムラインは存在していてこの中にスライドショーでも何でも作れるのです。) (今回の説明では時計を作ることにします。) スプライト内のタイムライン部分を右クリックして 「アクションレイヤーを挿入」を選択します。 できたアクションレイヤーのフレーム1を選択して 画面右下の「スクリプトを編集」ボタンをクリックします。 するとスクリプトエディタが出てくると思うので そのスクリプトエディタのスクリプトを書く部分に次のように書きます。 //----------------------------------------- //テキストフィールド「time_txt」を作成 this.createTextField("time_txt", 0, 0, 0, 100, 20); //「time_txt」の枠線を表示 time_txt.border = true; //「time_txt」を背景アリにする time_txt.background = true; //毎フレーム実行するメソッドを定義 this.onEnterFrame = function() { // 現在の時刻オブジェクト now を作成 var now = new Date(); // 変数 h に時刻を取得 var h = now.getHours(); // 変数 m に分を取得 var m = now.getMinutes(); // 変数 s に秒を取得 var s = now.getSeconds(); // //2桁合わせ h = "0" + h; h = h.substr(-2, 2); m = "0" + m; m = m.substr(-2, 2); s = "0" + s; s = s.substr(-2, 2); // //「time_txt」に時刻を表示 time_txt.text = h + ":" + m + ":" + s; }; // 上のメソッドを即実行 this.onEnterFrame(); //----------------------------------------- これでスプライト内の編集は終わりですから 画面左上にある「スプライト1 (ID:1)」のように書かれてある部分をダブルクリックして メインのタイムラインの編集に戻ります。 そして シンボルリストで今作成したスプライトを右クリックし 「レイヤーに追加」を選択します。 これでメインのタイムラインに 時計のスプライトが配置されますから 後は「ウィンドウ」→「プレビュー」するとか または「ファイル」→「SWFファイル生成」するなどして動作確認をすれば良いです。 この時計はスプライト内で全てが完結していますから どのフレームに表示させても大丈夫です。 もちろん 上ではあくまでも仮の説明としてスクリプトで全てを作成しているだけで, 実際はスプライト内にテキストフィールドなどを好きなように手動配置しても良いです。 スプライトの中に別のスプライトを配置しても良いです。 (アナログ時計の針などはスプライトで作ると思いますし。) とにかく何重にでもタイムライン階層は作れます。
お礼
すごく丁寧な回答で分かりやすかったです。 おかげさまで希望通りのものが出来ました。 本当にありがとうございます。