• ベストアンサー

時間毎に変わるflash

お尋ねいたします。 時間毎に変わる画像はjavascriptでできるかと思うのですが、時間毎に変わるflashというのは作れるのでしょうか? できれば、flaファイルを個別に用意して、それを一時間毎に読み込むというような作りにできればと思うのですが、可能でしょうか? 教えてください。

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

  • ベストアンサー
noname#35109
noname#35109
回答No.1

時刻を取得して何かをする前に, 単にムービーをロードするのは大丈夫なのですよね。 その前に,パブリッシュしたFlashをHTMLに表示させるのも大丈夫ですよね。 >> flaファイルを個別に用意して と書かれているところにかなり不安を感じますが……, flaファイルはいくつ用意しても,プロが作っても素人が作っても,とにかくブラウザでは表示されません。 単にSWFファイルと書き間違いをされただけということで,1つの方法を書いておきます。 まず,外部SWFロード用のムービークリップを1つ作ってください。 そのムービークリップのインスタンス名を仮に「mov」としておきます。 その「mov」があるフレームに,フレームのスクリプトとして,例えば ---(コピペ可)------------------------------- JikokuObj = new Date(); Jikoku = Jikokuobj.getHours(); if (Jikoku >= 0 && Jikoku < 6) { loadMovie("sinya.swf", "_root.mov"); } else if (Jikoku >=6 && Jikoku < 12) { loadMovie("ohayo.swf", "_root.mov"); } else if (Jikoku >=12 && Jikoku < 13) { loadMovie("hiruyasumi.swf", "_root.mov"); } //…↓…続く…↓… ----------------------------------------- と書きます。すると, 0~6時であれば,深夜用ムービー(sinya.swf)がロードされ, 6~12時であれば,おはよう用ムービー(ohayo.swf)がロードされ, 12~13時であれば,昼休み用ムービー(hiruyasumi.swf)がロードされます。 --解説(エラーが起きると思うためコピペ不可)------ //JikokuObjというDateオブジェクトを作成 JikokuObj = new Date(); //変数Jikokuに,時刻を取得 Jikoku = Jikokuobj.getHours(); //もしJikokuが0時から6時までだったら if (Jikoku >= 0 && Jikoku < 6) {   //_rootに配置したインスタンス名「mov」というムービークリップに   //sinya.swfをロード   loadMovie("sinya.swf", "_root.mov"); //もしJikokuが6時から12時までだったら } else if (Jikoku >=6 && Jikoku < 12) {   //「mov」というムービークリップに「ohayo.swf」をロード   loadMovie("ohayo.swf", "_root.mov"); //もしJikokuが12時から13時までだったら } else if (Jikoku >=12 && Jikoku < 13) {   //「mov」というムービークリップに「hiruyasumi.swf」をロード   loadMovie("hiruyasumi.swf", "_root.mov"); } //…↓…続く…↓… --------------------------------------------- 13時以降も同様にできます。

furamingo123
質問者

補足

ご回答ありがとうございます。 >>flaファイルを個別に用意して ご指摘のとおりswfのことです。すみません。 >単にムービーをロードするのは大丈夫なのですよね フラッシュを始めたばかりで、そこもわかりません。 いくつかサイトを見たのですが、あまりよく理解できませんでした。 もしよろしかたっらお教えくださいませんか・・・ 環境は、flash MX Win XP です。

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

その他の回答 (5)

noname#35109
noname#35109
回答No.6

おや,何考えてたんでしょう? #5のデジタル時計の訂正です。 --------------------------------------- this.onEnterFrame = function() { TokeiObj = new Date(); Jikoku = TokeiObj.getHours(); if (Jikoku<10) { Jikoku = "0"+Jikoku; } Hun = TokeiObj.getMinutes(); if (Hun<10) { Hun = "0"+Hun; } Byou = TokeiObj.getSeconds(); if (Byou<10) { Byou = "0"+Byou; } mByou = TokeiObj.getMilliseconds(); }; ---------------------------------------   //もし,Jukoku10未満であれば,   if (Jikoku<10) {     //Jikokuには"0"という文字列と,Jikokuをつなげる     Jikoku = "0"+Jikoku;   }   //(それ以外は何もしない (JikokuはJikokuのまま)) これだけで良かったのでした。 暑さのせいか,不要な関数が出没してしまいました。

furamingo123
質問者

補足

お世話になっています。 デジタル時計はおかげさまですぐできました! どうもありがとうございます!!!! それで問題の時間毎の読み込みなのですが、 もうなにがだめなのかわからないんです。 どうぞよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
noname#35109
noname#35109
回答No.5

>> でもやはりうまくできません・・・。 >> スクリプトを書くときは、キーフレームにして記述するのですよね? 基本的にはキーフレームですが, #4の真ん中あたりでも書いたように,場合によってはオブジェクトが表示される前にスクリプトが実行される可能性があります。 もしそんな場合は,全く別の形も色も何でも良いので,ムービークリップを作って, そこに, --------------------------------------- onClipEvent (load) { JikokuObj = new Date(); Jikoku = JikokuObj.getHours(); if (Jikoku>=0 && Jikoku<6) { loadMovie("sinya.swf", "_root.mov"); } else if (Jikoku>=6 && Jikoku<12) { loadMovie("ohayo.swf", "_root.mov"); } else if (Jikoku>=12 && Jikoku<13) { loadMovie("hiruyasumi.swf", "_root.mov"); } // …↓…続く…↓… } ------------------------------------------- と書けば,回避できる場合が多いです。 なお,パスにはくれぐれも注意してください。 デジタル時計は簡単でしょう。 アナログは難しいですが,デジタルは簡単です。 ちなみに,テキストボックスの変数名:mByou を2つも書いてしまいました。ミスです。 左側はByouですね。スミマセン。 >> それで、一桁の時にゼロを表示させたいのですが、 >> これもifですよね? if文で良いと思いますよ。他にもあるかもしれませんが。 うまく行かないのは, if () の ( )内がうまく書けてないか,変数の操り方が変かです。 普通,本来の発想は, もし,時刻が 1 であったら01, 2 であったら02,3であったら03,… と行くのでしょうけどやたら長くなって書くのもしんどいですし,何処かでミスする可能性もあるので,少し考えます。 1~9までの数に0.1をかけて,小数部分を切り捨てれば,みんな0になる。 10より大きな数は0.1をかけて,小数部分を切り捨てても0にはならない(1以上になる)。 というわけでこうしてみました↓。 ----------------------------------- this.onEnterFrame = function() { TokeiObj = new Date(); Jikoku = TokeiObj.getHours(); if (Math.floor(Jikoku*0.1)<1) { Jikoku = "0"+Jikoku; } Hun = TokeiObj.getMinutes(); if (Math.floor(Hun*0.1)<1) { Hun = "0"+Hun; } Byou = TokeiObj.getSeconds(); if (Math.floor(Byou*0.1)<1) { Byou = "0"+Byou; } mByou = TokeiObj.getMilliseconds(); }; ---------------------------------- Math.floor() は小数部分を切り捨てて,整数にする関数です。   //もし,Jukoku×0.1が1未満であれば,   if (Math.floor(Jikoku*0.1)<1) {     //Jikokuには"0"という文字列と,Jikokuをつなげる     Jikoku = "0"+Jikoku;   }   //(それ以外は何もしない (JikokuはJikokuのまま)) となります。これでうまく行くと思います。 でも,あくまでも例です。 他に考えれば考えるだけ良い方法も見つかるかもしれませんが,いまのところ考えついた近道です。

全文を見る
すると、全ての回答が全文表示されます。
noname#35109
noname#35109
回答No.4

>> たびたび質問してすみませんが、 いえいえ,同じ問題ですものね。以下,長いです。わかり切っているところとかは読み飛ばしてください。 >> このファイルはサーバーにアップしないといけないのでしょうか? そりゃアップしないと他の人が見えません。 でもそういう問題ではないですよね。 アップしなければ動作しないかどうかということですね。 アップしなくても動作するはずです。 >> この時刻はパソコンの時刻かサーバーの時刻かどちらでしょうか? Flashは基本的にローカルPCの時刻を表示します。 JavaScriptなどと同じで,クライアントサイドのスクリプトです。 だから,パソコンの時刻を変えれば,実験はできます。 >> swfが読み込まれず、ロード用のオブジェクトが表示されます。 実際に, index.html(仮称) index.swf(仮称) sinya.swf ohayo.swf hiruyasumi.swf を同フォルダに用意して, 「mov」というインスタンス名のムービークリップを作り, 1フレーム目のフレームスクリプトとして -------------------------------------------- JikokuObj = new Date(); Jikoku = Jikokuobj.getHours(); if (Jikoku >= 0 && Jikoku < 6) { loadMovie("sinya.swf", "_root.mov"); } else if (Jikoku >=6 && Jikoku < 12) { loadMovie("ohayo.swf", "_root.mov"); } else if (Jikoku >=12 && Jikoku < 13) { loadMovie("hiruyasumi.swf", "_root.mov"); } //…↓…続く…↓… ------------------------------------------- と書いて,index.swf(仮称)をパブリッシュしましたが,やっぱり,時刻ごとにちゃんと違うSWFが表示されました。 >> ロード用のオブジェクトが表示されます。 ここが問題ですね。 ムービークリップにスクリプトが届いていない状態です。 どういう場合に届かないかというと, 1.インスタンス名のオブジェクトがない 2.オブジェクトまでのパスが間違っている 3.オブジェクト表示前にスクリプトが実行されている というのが多いパターンです。 1の対処法 スクリプト内のターゲットとなっている部分(上だと"_root.mov"の「mov」)が実際のオブジェクトのインスタンス名と合っているかどうかを確かめてください。大文字小文字も間違えず。半角であることもです。 2の対処法 ターゲットまでのパスを確認してください。 この場合は,メインアニメーションの直下(_root)に「mov」というオブジェクトを作っているので,"_root.mov"という"パス.インスタンス名" になっているのです。 読み込ませようとしているムービークリップがさらに別のムービークリップの中に入っているのであれば,そのインスタンス名もパスに必要になります。 「mov」が「hyouji」というムービークリップの中にある場合は,"_root.hyouji.mov"となります。 3の対処法 全体のファイルが重いとき,オブジェクトが読み込まれる(表示される)前に,フレームのスクリプトが実行されることがあります。 オブジェクトが表示される前に,「ロードしろ」と言っても,オブジェクトはいないのでスクリプトが伝わりません。 「オブジェクトが表示される」→「スクリプトが実行される」 とういパターンでないといけません。 フレームのスクリプトはオブジェクトの表示と同じフレームか,オブジェクトが表示された後に書かれてあるか確認してください。 もし両方,同じフレームで出てくる場合は,フレームではなく,別のムービークリップにスクリプトを書くと,うまく実行されることがあります。 読み込み用オブジェクトとは別に,ステージ外の見えないところに,新しいムービークリップを用意してください。 そのムービークリップに, --------------------------------------- onClipEvent (load) { JikokuObj = new Date(); Jikoku = JikokuObj.getHours(); if (Jikoku>=0 && Jikoku<6) { loadMovie("sinya.swf", "_root.mov"); } else if (Jikoku>=6 && Jikoku<12) { loadMovie("ohayo.swf", "_root.mov"); } else if (Jikoku>=12 && Jikoku<13) { loadMovie("hiruyasumi.swf", "_root.mov"); } // …↓…続く…↓… } ------------------------------------------- などと書いてみてください。 すると無事実行されることがあります。 または,_rootにJikokuを設定したい場合は, ------------------------------------------- onClipEvent (load) { JikokuObj = new Date(); _root.Jikoku = JikokuObj.getHours(); if (_root.Jikoku>=0 && _root.Jikoku<6) { loadMovie("sinya.swf", "_root.mov"); } else if (_root.Jikoku>=6 && _root.Jikoku<12) { loadMovie("ohayo.swf", "_root.mov"); } else if (_root.Jikoku>=12 && _root.Jikoku<13) { loadMovie("hiruyasumi.swf", "_root.mov"); } // …↓…続く…↓… } ------------------------------------------- となります。 一般的に,うまく行かないパターンで多いのは, 「2.オブジェクトまでのパスが間違っている」場合だと思います。 ================================================ >> ロード用のオブジェクトが表示されます。 もしこの問題が解消しても,SWFが読み込まれない場合は,今度は外のパスを注意してください。 SWFが貼り付いているHTMLから見たときのパスが,読み込むムービーのパスです。 ================================================ ~~~ついでに~~~ 「時刻によって別のSWFをロードする。」 というのより「デジタル時計」を作る方が簡単です。 不要かもしれませんが,デジタル時計の作り方。 ステージ上にダイナミックテキストのテキストエリアを横に並べて4つ配置します。 ┌──┐ ┌──┐ ┌──┐ ┌──┐ └──┘ └──┘ └──┘ └──┘ こんな感じ↑。 それダイナミックテキストボックスのプロパティで,変数を左から, Jikoku,Hun,mByou,mByou と仮に決めます。 今度は<インスタンス名>ではないです。 ダイナミックテキストのプロパティパネルの下の方にある,変数: となっている部分です。 そこに,一番左なら「Jikoku」,二番目なら「Hun」,…… と書いて行きます。 これで時計の表示部分は完成。 次にタイムラインのフレームにスクリプトを書きます。 新規作成から作った場合は,1フレーム1レイヤーですよね。 そのフレームに ---------------------- TokeiObj = new Date(); Jikoku = TokeiObj.getHours(); Hun = TokeiObj.getMinutes(); Byou = TokeiObj.getSeconds(); mByou = TokeiObj.getMilliseconds(); ---------------------- と書きます。 これで一度パブリッシュしてみて,SWFファイルを開くと, 開いた時刻が表示されると思います。 でも時計は止まっていると思います。 なぜ止まっているかと言うと上の計算が開いたときに1回しかされないからです。 時刻を動かしたいのであれば,フレームを複数フレームにして, 次のフレームにも同じ事を書いて, その次のフレームにも同じ事を書いて…… としていけば何度も計算されるので,リアルタイムの動く時計になります。 でもこれだと面倒なので,スクリプトを使って何度も計算させます。 ---------------------- this.onEnterFrame = function() { TokeiObj = new Date(); Jikoku = TokeiObj.getHours(); Hun = TokeiObj.getMinutes(); Byou = TokeiObj.getSeconds(); mByou = TokeiObj.getMilliseconds(); }; ---------------------- 上で書いたスクリプトを,これに書き替えます。 これは上で書いたスクリプトを onEnterFrame = function() {***スクリプト部分***} の {***スクリプト部分***}に入れたものです。 onEnterFrameはフレームが進むのと同じタイミング(デフォルトでは1/12秒)に1回,{******}に書かれた計算をする。 ということです。 だから,毎フレーム同じ事を書かなくてもいいことになります。 あとは装飾すれば,デジタル時計の完成。 「時刻によって別のSWFをロードする。」はこのスクリプトの秒や分などは要らないので使わなかっただけです。 --------------------- TokeiObj = new Date(); Jikoku = TokeiObj.getHours(); --------------------- ここの部分だけ使って, もし(If),Jikokuが○○であれば,○○.swfをロードするとしているわけです。 時刻が本当に取得出来ているかどうかを確かめるには, スクリプトの中でtrace()ステートメントを使えば、ムービープレビューの際に変数の値などを出力パネルに書き出すことができます。 上の(#1で書いた)スクリプトの場合, -------------------------------------------- JikokuObj = new Date(); Jikoku = Jikokuobj.getHours(); trace (Jikoku);  ~ ~ ~ ~ ~ -------------------------------------------- と書いててムービープレビューしてみると出力パネルに時刻が出るはずです。 時刻が出れば,時刻取得までは成功しているということです。 この,trace (); を使っても調べられますが,デジタル時計のように,変数名を付けたダイナミックテキストを用意していても調べることができます。

furamingo123
質問者

補足

お返事が遅くなりすみません。 ご丁寧に親切に本当にありがとうございます。 でもやはりうまくできません・・・。 スクリプトを書くときは、キーフレームにして記述するのですよね? もうちょっとチャレンジしてみようと思います。 また、デジタル時計も実は教えてほしかったのでとてもありがたいです。 それで、一桁の時にゼロを表示させたいのですが、 これもifですよね? うまくできません・・・。 よろしかったらまた教えていただけますか・・・

全文を見る
すると、全ての回答が全文表示されます。
noname#35109
noname#35109
回答No.3

#1です。 >> フラッシュを始めたばかりで、そこもわかりません。 ということなので,単純なロードのしかたの説明をします。 00.html 11.swf 22.swf この3つが,サイトの同じフォルダの中にあったとします。 「00.html」は「11.swf」を表示させているHTMLで, 「11.swf」に「22.swf」をロードする場合を考えます。 「22.swf」 これは適当に作ってください。 読み込ませる11.swfより大きければはみだしてしまうので,11.swfよりはステージが小さいムービーです。 また真っ白だとロードされたのかされてないのかがよくわかりませんので, 適当に何か書いたり,色をつけたりしてください。 「11.swf」 22.swf をロードするムービークリップをまず作ります。場所づくりです。 10×10ピクセルくらいの小さなムービークリップで良いです。 単に黄色い塗りの■を描いて,その■を選択, 右クリック→シンボルに変換→ムービークリップにチェックを入れ,OK。 そしてそのムービークリップのインスタンス名を付けます。 今作ったムービークリップを選択,下に表示されるプロパティパネルの左の方にある<インスタンス名>となっているところを書き替えます。 仮に「MC1」というインスタンス名にしておきましょうか。 これを,ステージの右上の方に配置してください。 次に,スクリプトを書かなければ, ××.swf は読み込まれません。 スクリプトを書く場所は,したい形によって変わるので,何ともいえませんが, #1ではフレームに書いたので同じくフレームにしておきましょうか。 そのフレームをキーフレームにして, 下に表示されているアクションパネルを選択,白いスクリプトを書く部分に loadMovie("22.swf", "_root.MC1"); と書きます。 これで,「11.swf」を開くと,中に「22.swf」が表示されると思います。 MC1を起点として「22.swf」の左上がその場所に来ると思います。 ロードされる位置は,MC1の場所を変えるなどして調節してください。 これの発展系が,#1で書いた,時刻を取得して,○○時だった場合,○○.swfをロードする。 というスクリプトになるのです。

furamingo123
質問者

補足

たびたびありがとうございます。 単純なロードのしかたはわかりました。 しかし、時間毎のロードがやはりうまくできません。 swfが読み込まれず、ロード用のオブジェクトが表示されます。 また、このファイルはサーバーにアップしないといけないのでしょうか? この時刻はパソコンの時刻かサーバーの時刻かどちらでしょうか? たびたび質問してすみませんが、どうぞよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
noname#35109
noname#35109
回答No.2

#1です。 すみません。スクリプトの2行目, ---(コピペ可)------------------------------- JikokuObj = new Date(); Jikoku = Jikokuobj.getHours();  ↓↓↓ ---(コピペ可)------------------------------- JikokuObj = new Date(); Jikoku = JikokuObj.getHours(); JikokuObjの部分。定義したものと,使っているものとの大文字,小文字が合っていませんでした。

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

関連するQ&A

  • Flash CS4(AS2.0)で作成したアニメーションを、Dream

    Flash CS4(AS2.0)で作成したアニメーションを、Dreamweaverに埋め込むにはどのようにしたらいいのでしょうか? Flashで作ったものをパブリッシュをすると、FLAとHTMLとSWFのファイルが作られましたが、 Javascriptのファイルはどのように作ったらいいのでしょうか? FlashもDreamweaverも初心者です。ご教授お願い致します。

  • FLASHに関しての質問です。

    FLASHを使っての作業の質問です。詳しい方教えて下さい。宜しくお願い致します。 1、.flaを読み込んで画像の交換をしたいのですが不可能でしょうか? ※個別には新規に読み込んだりできますが、シンボルとして登録して変更したいのです。(沢山のフレームにまたがっているので・・個別に行なうと画像の位置が微妙にずれてしまいます。) 2、上記の質問が可能として標準サイズで作られ(読み込まれ)た.swfのサイズの変更(バナーサイズなど)は可能でしょうか? もう何日もここで足踏みしています。色々なサイトを訪問し、立ち読みも含めて5冊ほどの書籍にも目を通しましたが・・わかりません。宜しくお願い致します。

  • 日付が変わったらFlashのファイルを差し替える

    javaScript初心者です。よろしくお願い致します。 トップページ上部に配置している「fla01.swf」のFlashの動画を、一定期間(お正月期間の1/1~1/10まで)のみ、「fla02.swf」に自動で差し替わり、1/11になったらまた元の「fla01.swf」になるjavaScriptを作成したいと思います。 いろいろなサイトを検索しているのですが、サンプルを見つけられずにいます。 どなたか、ご存知でしたら教えてください。よろしくお願い致します。

  • flashで音と画像がずれてしまいます

    こんばんは。 flashでスライドショーを作りました。 がんばってがんばって音楽と画像の動くタイミングを合わせました。 「fla」ファイルを再生すると、作ったとおり、ぴったり合っているのですが、「swf」ファイルではずれてしまいます。 凄く悲しいです。 原因はなんでしょう? 修正する方法はありますか?? 教えてください。宜しくお願いします。

    • ベストアンサー
    • Flash
  • FLASHファイルの中身がない??

    いつも助かっています。今回もよろしくお願いします。 無料のFLASHファイル(.swf/.fla)をダウンロードしたのですが.swfを 再生すると、とても長い動画なのにFLASHで.flaファイルを開けたら すごく短い(タイムライン上で)ファイルなのはなぜでしょうか? ちなみに.flaファイルをパブリッシュして.swfに変換後、再生したら やっぱり長い動画でした。 どこかに長く作ったファイルが隠れてるのでしょうか? 素人の為、言葉が足りず申し訳ありませんがよろしくお願いします。

  • flashファイルの編集とアップロード

    海外の無料フラッシュウェブテンプレートサイト「Flash Village」というサイトで、以下のようなフラッシュファイルをダウンロードしました。 ↓ http://www.flashvillage.com/templates/Film/index.html ダウンロードしたファイルを展開してみると、以下のようなファイルが入ってました。 ↓ ●readme.txt(説明文みたいなのが英語でずらーっと) ●index.swf ●1.swf ●2.swf ●3.swf ●4.swf ●5.swf ●index.fla ●1.fla ●2.fla ●3.fla ●4.fla ●5.fla ●index.html(これはhttp://www.flashvillage.com/templates/Film/index.htmlに接続) このフラッシュテンプレートをホームページビルダーを用いてアップロードする方法がわかりません。 また、再生時に表示されるテキストや画像の編集方法もわかりません。 ●WindowsXP ●ホームページビルダー10 ●Flash作成ソフト「Free Motion」 このような環境です。 どなたか教えてください。 わかりにくくて申し訳ございません。

  • flash 画像を12枚用意して、毎月自動で変更

    あらかじめ画像を12枚用意しておいて、 毎月 1日に表示する画像を自動で切り替えるようにするにはどうすればよいでしょうか? 下記URLのようなイメージです。 http://flash.xtaro.com/sozai/welcome12.htm 簡単な作り方、もしくはflaを配布しているURL等があったら勉強したいので教えてください。

  • プルダウンメニューは、FlashとJavaScriptどちらで作るほうがいい?

    プルダウンメニュー(別名:ドロップダウンメニュー)をFlashとJavaScriptで作りました。自分はFlashのほうが作りやすかったのですが、みなさんはいかがですか? fla、JSそれぞれのメリット、デメリット教えてください。 一般的に、どちらで作られてるのでしょうか…?

  • フォルダの中にある複数のFlash CS4のファイルをFlash CS3のファイルにして保存したい

    フォルダの中にある複数のFlash CS4のファイルをFlash CS3のファイルに して保存するにはどうすればよいのでしょうか? (01.fla~99.flaの99個のFlash CS4ドキュメントで保存したファイルをFlash CS3ドキュメント形式のファイルにしてFlash CS3でも開けるようにしたい) 使用OS:Windows Vista 使用ソフト:Adobe Flash CS4 ご存知の方がおられましたらご回答をよろしくお願いします。

  • フラッシュファイルをHPに載せるには?

    フラッシュ5で作成した拡張子flaのファイルをHPに掲載する方法を教えて下さい。