• ベストアンサー

flash  トップページ 自動再生防止

はじめまして。 どうしてもわからないことがあるので 知っている人がいたらぜひ教えてください。 ホームページをビルダーにて製作しているのですが その中にflashのファイルを貼り付けることにより 動画を再生しています。 現在私のホームページ構成 は以下となっております。 トップ:flashの動画を貼り付け、以下サブページと なっています。 私の希望は ”サブぺージからトップへ1分以内"で戻ったとき動画ストップ(静止画)いわゆるタイムラインで言えば最後のフレーム(stop状態)の絵を表示。 "サブぺージからトップへ1分以上経ってたなら"再び動画再生”ということをしたいです。 そうしないとサブからトップへすぐ戻るたびに動画が最初から再生してしまうからです。(もち、停止ボタンの使用や、戻りは他のhtmlを用意という姑息な手はしたくないです) ネットで調べたところ、sharedObjectを利用したローカルでの作業となるみたいですが何分初心者のため使い方がわかりません。よろしくお願いします。 環境:Windows XP Flash MX6

  • Flash
  • 回答数4
  • ありがとう数5

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

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

回答の前に, >> 停止ボタンの使用や、戻りは他のhtmlを用意という >> 姑息な手はしたくないです がかなり引っかかります。 その手がよければ,手段の1つであって,姑息だとは思いません。 また,そうされているサイト作成者の方が色々な理由により,そうされていることもあるでしょう。 まぁ,でも安心してください。 そんな手を使ってもできませんから。 そんな方法でどうやったらできるんだろう? と考えてしまいました。 一度,ちがうURLに飛びますからね。 停止ボタンの使用や、戻りは他のhtml では無理です。 方法は,御推測の通り,SharedObject を使うか, もしくはCGIなどサーバーサイドの言語を使ったものに変数を送ってその値を保存するかです。 CGIは疎い物で,下記の方法は SharedObject です。 ~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~ まず,1つのムービークリップを置く,専用のレイヤーを1つ用意してください。 そして,そのレイヤーにムービークリップを1つ作ってください。 形や大きさは何でもいいです。小さくて目立たない方が良いでしょう。 場所もステージ外の方が良いです。 そのムービークリップに以下のスクリプトを書いてください。 どこも変えずそのまま使用できます。 コピペ可↓ ------------------------------------------- onClipEvent (load) { myObject = SharedObject.getLocal("Watch"); myDate = new Date(); Watch2 = myDate.getTime(); if (myObject.data.Watch1 != undefined) { Watch1 = myObject.data.Watch1; frame = myObject.data.frame; } else { Watch1 = 0; } if (Watch1+60000>Watch2) { _root.gotoAndPlay(frame); } } onClipEvent (enterFrame) { myDate = new Date(); Watch3 = myDate.getTime(); myObject.data.Watch1 = Watch3; myObject.data.frame = _root._currentframe; } ------------------------------------------- あえて変えるとするならば, if (Watch1+60000>Watch2) { の 60000 の部分です。 これは単位はミリ秒で,60秒のこと,つまり1分です。 一応簡単に上のスクリプトの説明を書いておきます。 ※インデントをつけるために,各行の前には全角空白文字を入れています。  シンタックスエラーを起こすのでこちらはそのままコピペ不可です。 ------------------------------------------- //このMC(ムービークリップが読み込まれたとき) onClipEvent (load) {    //SharedObject を作成    myObject = SharedObject.getLocal("Watch");    //時刻オブジェクトを作成    myDate = new Date();    //変数 Watch2 に1970 年1月1日0 時以降のミリ秒を取得    Watch2 = myDate.getTime();    //もし sol ファイルに Watch1という変数があったら    if (myObject.data.Watch1 != undefined) {       //このMCの変数 Watch1にsol のWatch1の値を格納       Watch1 = myObject.data.Watch1;       //このMCの変数 frame にsol の frame の値を格納       frame = myObject.data.frame;    //もし sol ファイルに Watch1という変数がなかったら    } else {       //変数Watch1に 0 を代入       Watch1 = 0;    }    //Watch1に60秒を足した数がWatch2より大きければ    if (Watch1+60000>Watch2) {       //変数 frame のフレームに行く       _root.gotoAndPlay(frame);    } } //1フレーム進む時間毎に1回以下を実行 onClipEvent (enterFrame) {    //時刻オブジェクトを作成    myDate = new Date();    //変数 Watch3 に1970 年1月1日0 時以降のミリ秒を取得    Watch3 = myDate.getTime();    //SharedObject の 変数 Watch1に Watch3 の値を格納    myObject.data.Watch1 = Watch3;    //SharedObject の 変数 frame に,_root の今のフレーム数を格納    myObject.data.frame = _root._currentframe; } ------------------------------------------- ローカルでも使用可能ですが, 一応,実際に,自サイトにUPしてみてもも使えました。 なぜか一部のFlashMX に付いてくる FlashPlayer6(スタンドアローンの方) では SharedObject か動作しない場合があります。 もし動作しなければ,HTMLに貼り付いた状態のもので確認してみてください。 ブラウザを通したときに見るプラグインの方の FlashPlayer6 や FlashPlayer7 では大丈夫だと思います。

taira812
質問者

お礼

ありがとうございます! 試してわからなければ、また質問します。 「姑息な手」に関しては失礼しました。 確かに、人それぞれですよね。

taira812
質問者

補足

sassakunさんへ 無事解決しました。感謝の気持ちでいっぱいです。 お忙しい中、詳細に解説いただき大変に助かりました。また、貴方様方の知識も豊富で羨ましい限りでございます。今後も掲示板への私の質問等が目につきましたら、厳しいご指摘(ばしばしお願いします)、ご回答を心よりお待ちしてます。 ありがとうございました。

その他の回答 (3)

noname#35109
noname#35109
回答No.4

#2&3 です。 >> 質問2 あと、20秒経った後WEBを更新しても >> 動画が再生せず停止したままなのです。 そりゃそうです。そうしてますから。 他のページに行くまで,時刻をカウントしています。 それで,他のページへ行って,20秒後以降に戻ってくると,また動き出すわけです。 TOPページを見て20秒経った後,WEBを更新しても, 更新の直前までカウントしていて,その更新前の時刻と更新後の時刻を比較しますから,当然,一瞬しかなく,20秒以内です。 もし,「他のページに行って,20秒以内」ではなく, 「そのページを表示させて,20秒以内」の方が良いのでしたら,スクリプトはさらに簡単になります。 そのページを出る時刻を取得しなくて良いので, onClipEvent (enterFrame) 以降が不要になります。 --------------------------------------------- onClipEvent (load) { myObject = SharedObject.getLocal("Watch"); myDate = new Date(); Watch2 = myDate.getTime(); if (myObject.data.Watch1 != undefined) { Watch1 = myObject.data.Watch1; } else { Watch1 = 0; } //一応20000にしています。変えてください。 if (Watch1+20000>Watch2) { //20を最終フレーム数に変えてください。 _root.gotoAndStop(20); } myObject.data.Watch1 = Watch2; } } -------------------------------------------- となります。 繰り返しますが, これは,「ページが表示されてから次に表示されるまで」のスクリプトです。 「ページを出てから次に表示されるまで」だと#2のスクリプトになりますよ。 >> 質問1;_root.gotoAndStop(836)でフレーム836へ飛びません。 >> たぶんですが、フレーム1でストップしてます。 これが#3で書いた現象だと思います。 _root.gotoAndStop(836) でなくて, _root.gotoAndStop(3) くらいならうまく行くかもしれません。 上のスクリプトを実行している瞬時に836まで読み込むのは不可能でしょう。 もーーーーーーっと軽いファイルで,なおかつローカルであれば, _root.gotoAndStop(836) もおそらく成功すると思います。 ネット上で,あの重さで _root.gotoAndStop(836) はどう考えても不可能です。 回線が光の速いやつでも無理でしょう。 だからロード中は,このスクリプトが実行されないように待つ必要が出てきます。 それで,Now Loading... みたいなものが必要になるのです。 おそらく,ロード中はムービーをスタートさせない処理をするとうまく行くと思いますよ。 ロード中はこのスクリプト入りのムービークリップは表示させてはいけません。 ロードが完了したら→ gotoAndPlay(3);  みたいな場合であれば,3フレーム目からこのムービークリップを表示させてください。 表示させると言っても,ステージ外の見えないところでもかまいません。 ロード中はストップさせる仕組みですが, フレーム1に ------------------- stop(); ------------------- と書いて,ムービーをストップさせておいて, その1フレームだけに存在する,ムービークリップを1つ作って, そのムービークリップに ------------------------------- onClipEvent (enterFrame) { Total = _root.getBytesTotal(); Loaded = _root.getBytesLoaded(); if (Loaded>=Total) { _root.play(); } else { _root.stop(); } } ------------------------------- と書けば,簡単な「ロード中は1フレームで停止」するものができます。 2フレーム以降は,このムービークリップは消してください。 また2フレームになれば,#3や,この回答の一番上のスクリプトを書いたムービークリップを登場させると うまく行くと思いますよ。 ロード中はひたすら,フレーム1で静止しています。 凝ったものにする場合は,検索されて,サンプルを見つける方が早いです。 文字だけの説明より,実物の方がずっときれいな,ロード中画面ができると思います。

taira812
質問者

お礼

ご回答ありがとうございます。 最後のフレームへ飛ばないのはやはり一旦キャッシュしてからでないとだめですか・・早速、Now loadingを試してみます。あと更新の件ついても、なるほど了解いたしまた。 今度こそうまくいくと思いますが、それでもできなければまたアドバイスおねがいします・・・お手数おかけしてます。

taira812
質問者

補足

あっ、試す前もう一つ気になったことがあるので>_root.gotoAndStop(836) もNow loading でおそらく成功 とのことですが、その前に下記をためしてみました。 一旦トップページにて”836のフレームまで再生”次にサブへ移動後すぐにトップへ戻る この場合は”836のフレームまで再生”と”Nowloading後”は同じ意味ということになりませんか。 つまり、836のフレームまで終了させるってことはメモリー内では836までキャッシュされているはずです。それなのに実際トップ再生終了後→サブ→トップへを試しても同様に3フレームまでくらいしか表示しません。わたくしの見解ちがいでしょうか?

noname#35109
noname#35109
回答No.3

すみません,#2です。 >> 1分以内"で戻ったとき動画ストップ(静止画) >> いわゆるタイムラインで言えば >> 最後のフレーム(stop状態)の絵を表示。 でしたね。 うっかり勝手に,再生されていたフレームの続きを見せるのかと思いこんでしまいました。 「最後のフレーム(stop状態)の絵を表示」 でしたら,_root の _currentframe を保存する必要がないので,もう少し簡単になります。 コピペ可↓ ------------------------------------- onClipEvent (load) { myObject = SharedObject.getLocal("Watch"); myDate = new Date(); Watch2 = myDate.getTime(); if (myObject.data.Watch1 != undefined) { Watch1 = myObject.data.Watch1; } else { Watch1 = 0; } //ココの60000を変更してください if (Watch1+60000>Watch2) { //ここの400を最終フレームに変更してください _root.gotoAndStop(400); } } onClipEvent (enterFrame) { myDate = new Date(); Watch3 = myDate.getTime(); myObject.data.Watch1 = Watch3; } -------------------------------------- です。 説明は,#2で書いたのとほぼ同じで, _currentframe を保存する ところを取ったのと, _root.gotoAndStop(400); を定数にしたところです。 この _root.gotoAndStop(400); の400は最終フレームに変更してください。 ただし~! これは,理想状況でファイルが読み込まれたときの話です。 このMCが読み込まれたときに,最終フレームである400フレームまで読み込みが完了していなければ, 400フレームはないことになり,真っ白のまま停止する可能性かかなりあります。 現在,Nowloading などの「 読み込み中」 で1フレームでストップなどの処理がされていると, 問題ありませんが,そういう処理がないと,おそらく,変なフレームに飛んで,真っ白になると思います。 Nowloading 画面を表示するなどの処理をしてください。 Nowloading は,検索エンジンで検索すれば,たくさんサンプルが出てくると思います。 このことは,#2でも同じです。 軽いファイルで実験すると Nowloading がなくても大丈夫ですが,300KBを越えるような物はおそらくダメです。 あと,なぜか日本語ファイル名のSWFが表示されていますが,ネット上では御法度事項です。 ファイル名を半角英数文字にしてください。 表示が遅いのもそのせいかもしれません。 今,私の環境で,遅いながらも表示されているのは奇跡です。 おそらく,サーバーなどがなんとか対応しているのでしょう。 それとついでに, TOPのメニューをそんな感じに左横に縦並びにフレームのように表示させるのであれば, 他のコンテンツページでもそうするのが普通です。 他のコンテンツページでもそうするといちいちTOPページに戻ることなく,違うページに移動できます。 だから普通は,SharedObject なんて言う物は使わなくて良いのです。 普通のサイトは SharedObject なんて使っていないでしょう。 Flashとは関係ありませんし,大きなお世話だとは思いますが, サイト構成をいちいちTOPに戻るようにするパターンは変えた方が良いと思います。 少なくともブラウザの「戻る」でしか移動できないのも,あまりよろしくないと思います。 #2 のときに書こうと思って書かなかった "余計なお世話" 部分も書きましたが, #2の補足は以上です。 質問文の解釈を間違えていて,失礼しました。

taira812
質問者

お礼

ありがとうございます! 了解です、只今、少ない知識を絞りながら必死に 試しています。 わからなければまた、質問しますのでよろしくお願いします。

taira812
質問者

補足

sassakunさんへ 早速試しました。いくつか動作しないのでまた おねがいします。 サブからトップへ戻るとき動画はストップしてくれました。(現在は20秒の戻り時再生開始で設定してます。) →if (Watch1+20000>Watch2) ところが 質問1;_root.gotoAndStop(836)でフレーム836へ飛びません。たぶんですが、フレーム1でストップしてます。 質問2 あと、20秒経った後WEBを更新しても動画が再生せず停止したままなのです。(一応は、戻るで再生してくれますが・・) 下記が私のタイムラインです。参考にしてください。 レイヤー1 少林寺の絵 ;シンボリックに変換して(ここに貴方様のアクションスクリプトを記述、ここの最後のフレームが836へ飛んで静止してほしいんですが・・うまくいきません)            レイヤー2 背景(宇宙);フレーム1で停止するのでこの絵がでてしまってます。 レイヤー3 ボール      ・     ・ あと少しで解決ってことだと思うのですが、お手数おかけしてます。(その他指摘があった、html漢字表示 や、now loadingについても手直しの予定です) ありがとうございます、かなり勉強になっています。 ぜひアドバイスお待ちしております。

  • perse
  • ベストアンサー率74% (113/152)
回答No.1

まず、最初に著作権の方で引っかかっていると思います(音楽とぷーさん)が大丈夫でしょうか? 質問の方ですがFlashだけではまず無理です(他の言語と組合わせて出来るかはわかりません)。 sharedObjectは訪問者のPCにデータを保存するものでクッキーみたいなものです。 これを使えば訪問回数を保存させて、2回目の訪問だったら静止画を表示して訪問回数をクリアする。 みたいなことは可能です。 余計なことかもしれませんが、トップページにFlashが貼ってあってしかも自動的に再生というのを嫌う人も結構いるようです。

taira812
質問者

お礼

ありがとうございます。 確かに著作権にひっかかりそうですね。わかってはいるのですが・・オリジナリティが苦手なもので・・ まあ、今回はじめてのホームページ作成 ということなのでお試しの意味を含めています。 気をつけます。 >トップページにFlashが貼ってあってしかも自動的に再生というのを嫌う人も結構いるようです。 →まさにそのとおりです、そういう人がいるため一回のみの再生にしたいのです。

関連するQ&A

  • ホームページ作成で、トップページに戻るとフレームが増えてしまいます

    ホームページビルダ6.5を使っている初心者です。 トップページをフレームぺージにしたのですが、サブページから トップページに戻るたびに、左側のフレームがどんどん増えて いってしまいます。これはどこが悪いのでしょうか?

  • flashの再生後に別ページに自動でジャンプするには?

    flashを使ってホームページのタイトルムービーを作っています。タイトルムービーのページで、flashの再生が終わったら、自動的にHTMLベースのトップページにジャンプするようにしたいのですが、どのようにすればよいのでしょうか? 「ENTER」ボタンを使っているページをよく見ますが、できれば使いたくありません。 ちなみに使っているソフトは、flash作成にはFlashMaker、ページ作成にはDreamweaverです。 また、このとき、タイトルムービーのページと、その次に表示されるトップページのファイル名はどのように付けるのが適切でしょうか?

    • ベストアンサー
    • Flash
  • FLASHムービーの後、自動的に静的ページに飛ぶには

    FLASHムービーが再生した後、自動的にホームページのトップページに飛ぶようにしたいのですが、どのような設定が必要でしょうか?

  • ウェブブラウザのFLASHを自動再生させたくないのですが…。

    インターネットエクスプローラーで、FLASHのアニメーションを貼り付けたサイト(Yahoo JAPANのトップなど)にアクセスした際、FLASHを再生するまでに時間をとられ、とても煩わしく感じております。FLASH自体は任意での動画再生に必要です。解決方法としては、ブラウザのFLASH再生を手動に設定出来ればベターかな、と考えておりますが、方法がわかりません。どなたかご教示頂けませんでしょうか。また、他にも何か良い方法がございましたら、あわせてお願い申し上げます。

  • Flashが再生されない機種

    SoftBank 805Tを使用しています。 内蔵されているFlashを壁紙に設定したところ、動画にならず静止画で表示されるので、問い合わせてみたところ、805Tは壁紙でFlashが再生されない機種だと説明されました。 ちょっと残念だったのですが、壁紙で再生できないならFlashが内蔵されている意味がないのでは・・?と思うのですが、この場合Flashは何か他に利用方法はあるのでしょうか?

  • Flashの再生位置について

    Flashの再生位置についてご質問です。 サイトのトップページでメインにフラッシュを使用したとします。 オープニング5秒くらい再生し、キメ画面でメニューボタンがいくつか並び、静止する、といったムービーです。 この場合、トップページから内面ページに遷移し、再度トップページに戻った場合、イントロからまた再生されると、ナビゲーションとして使い勝手が悪くなってしまいます。 そこで、一度ムービーを再生させたら、もう一度再生する時は、決められたシーンから再生をしたいのですが、どういう方法がありますでしょうか。 同じような仕様のサイトを調べてみたところ、JavaScriptでCookieを取得し、行っているようでしたが、どういう仕組みなのか分かりませんでした。 もし、JavaScriptと連動させなくてもFlashのスクリプトだけでこれが可能であれば、それにこした事はありません。 お分かりの方はいらっしゃいましたら、教えていただけますでしょうか。 よろしくお願いいたします。

  • ウィルコムのW-ZERO3のFlash機能について。

    二ヶ月前にW-ZERO3(WS003SH)を買いましたが、Flashが全く再生されません。Flash対応という事だったのですが…。ウィルコムのHPのトップページのも、メーカーのSHARPのHPのトップページのFlashも全く動かず静止画像のままです。どうしたらFlashが再生できますか?IEモバイルでもOperaでも全く動きません。以前に(06/02/07)質問No.1944575でsarudesijrさんが回答した「WillcomのFlash Playerはversion6で、PC用のコンテンツも普通に利用でき、Operaブラウザを起動して再生できます。」とありましたが、ウィルコムのホームページのフラッシュはどうしたらW-ZERO3で再生できますか?引用されたhttp://sega.jp/のサイトも静止画像のままです。Yahoo!のトップページのバナー広告も全く動きません。

  • (1)loading後再生→(2)すぐにアクセスした場合飛ばす

    現状できてることは (1)トップページにてLoading後(一分くらい)→再生→最後のフレームではストップ (2)そしてサブからトップへすぐに戻ったとき→Loading(一分)後、再生せず→最後のフレームでストップということまではできてます。 問題は(2)の"またLoading(一分)後”なのです。 サブからすぐにトップへ戻ったときは再生せずに 最後のフレームへジャンプしてくれるのはいいのですがその前にLoadingが発生して一分たってから最後の フレームへジャンプするのです。このときのloading の防ぎ方を教えてください。 現状スクリプトを下にて参考にしてください。 Flash MX6 フレーム数940 フレーム1 onClipEvent (load) { _root.stop(); //タイムラインの1フレーム目で止めておく } onClipEvent (enterFrame) { // すべて読み込んだら3フレーム目へ if (100 == Math.floor(_root.getBytesLoaded()/_root.getBytesTotal()*100)) { _root.gotoAndPlay(3); } } フレーム 2 gotoAndStop (1); ---------------↑ここまではLoading--------------- フレーム4 onClipEvent (load) { myObject = SharedObject.getLocal("Watch"); myDate = new Date(); Watch2 = myDate.getTime(); if (myObject.data.Watch1 != undefined) { Watch1 = myObject.data.Watch1; } else { Watch1 = 0; } //ココは60000で一分 if (Watch1+60000>Watch2) { //ここを最終フレーム _root.gotoAndStop(920); } } onClipEvent (enterFrame) { myDate = new Date(); Watch3 = myDate.getTime(); myObject.data.Watch1 = Watch3; } ----------↑一分内は940へジャンプ(前回sassakunさんにてご回答)-------------- フレーム4をフレーム1へ先にもってきたり 色々ためしましたがうまくいきませんよろしくおねがいします。

    • ベストアンサー
    • Flash
  • Flashを使わず動きのあるかっこいいトップページを作成したい

    自社ホームページのトップページ作成を任されているのですが かっこいいトップページになりません。 Flashを使わずにjavascriptで以下の様なトップページ作成を試みています。 http://www.kagetu.com/ 今の所、jquery.cross-slide.jsのajax?を使って画面がスライドするページは できたのですが、スライドが止まって文字が浮かび上がってまた別の画像が スライドするといったような複雑な動きができません。 どなたかここで掲載したようなホームページをjavascriptとかを使って (Flashを使わず無料のツールで)作成する 方法をご存知の方いらっしゃいましたらご教授ください。 ※コードも載せていただけると助かります。

  • FLASH再生について

    FLASHが再生されるホームページを閲覧する時、 環境によって、動画の開始が遅いものがあるのですが 何か改善方法はないでしょうか? ちなみに、遅いと比較したものは、 同じフロア内で接続しているインターネット環境で PCも同じスペックという事です。 Flashプレーヤーも最新です ネットで検索したら、IEのメモリ割り当てを増やす方法とか書いてありましたが、 手順が見つけられませんでした。 よろしければアドバイスお願いします。

専門家に質問してみよう