• 締切済み

Flashについて

現在FlashCS5 actionscript2.0でサイトを制作しております。 内容としましては、TOPページに簡易的な音楽プレーヤー(再生・停止・一時停止)が あり、サイト訪問時に音楽が再生するというものです。 今回の質問なのですが、初回訪問時に音楽再生をさせ、2度目以降の訪問時には 音楽をとめる。ただし、再生ボタンを押すと再び音楽が再生するということを行いた いのです。 色々調べてみて、下記の方法が近いのではと思いました。 ただ、下記の方法だと再生ボタンが効かなくなってしまいます。 なにか良い方法はありませんか? ------------------------------------------------------------------------------- 【Flash Q&A参照】 アクションレイヤー、1フレームのフレームアクション・・・ span = 15; ←変数spanを定義、そこに一定の秒数以内の値を設定(例は「15秒以内」)  nowDate = new Date(); ←現在年月日時分秒を取得、nowDateというDateオブジェクトを作成  nowAC = nowDate.getTime(); ←その時点の世界標準時点からの経過ミリ秒をnowACに代入  cookie = SharedObject.getLocal("accessTime"); ←cookieという名のHD読書きオブジェクト  if (cookie.data.beforeAC != undefined) { HD変数beforeACが未定義でないなら    Time = Math.floor((nowAC-cookie.data.beforeAC)/1000); ←Timeに経過秒数を代入    cookie.data.beforeAC = nowAC; ←HD変数beforeACに今回経過ミリ秒を保存    if (Time < span) { 経過秒数が、変数spanの値より小さいとき      this.gotoAndStop("menu"); ←”menu”フレームに移動して停止    }  } else { そうでない(初回アクセス)なら    cookie.data.beforeAC = nowAC; ←HD変数beforeACに今回経過ミリ秒を保存  } -------------------------------------------------------------------------------

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

みんなの回答

  • tracer
  • ベストアンサー率41% (255/621)
回答No.2

初回アクセスかどうかはsharedObjectで判断し、初回なら再生、2回め以降なら再生しない。というスクリプトでまったく問題ないと思いますよ。今回の質問を実現する仕組みはそれだけで必要十分です。 ただ、補足を読む限り、内容を複雑にしているものがあるとしたら、もともとある音楽再生の部分かと思います。もっといえば、音楽再生をフレームで管理しようとしているのが事を難しくしているかもしれません。フレーム管理がダメだとか、できないという訳ではないですが、多くの場合、非効率です。全体の内容は分かりませんが、音楽プレーヤだけなら1フレームで十分表現できます。そしてそれはそんなに高度なテクニックではないはずです。頑張って調べてみてください。

kaneko0407
質問者

お礼

有難うございます。 とりあえず、考え方は間違っていないようなので安心しました。 もう少しがんばってみます。

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

書かれていらっしゃるご質問文章にも 書かれていらっしゃるスクリプトにも 「音」に関して何も書かれていないので何とも言えませんが...。 「音」に関してはまるでなかったかのように SharedObject と this.gotoAndStop("menu"); が書いてあるだけです。 この状態では 音 の再生も停止も 音の有無さえ わかりませんが。 スクリプトを書かれたタイムライン (this.gotoAndStop("menu"); の 「this」)のレイヤーに 音を直接配置したということでしょうか? それで 「タイムライン が再生されない」=「音が再生されない」 という現状に陥っているということですか? それでしたら 普通にするように(よく見かけるパターンのように) new Sound で Sound オブジェクト を作成して attachSound などをすれば良いのではないでしょうか? 「FN0402003 - Sound.attachSound()メソッド - Flash テクニカルノート」 http://fumiononaka.com/TechNotes/Flash/FN0402003.html 「タイムラインの再生と同期したストリーミング再生でないとならない」 という場合も new Sound で Sound オブジェクト を作成して _root または スクリプトを書かれたタイムライン の音量を 0 にするとか。 「静的に配置したサウンドの音量を変更したい」 http://hakuhin.jp/as/sound.html#SOUND_00 とにかく音に関する説明が抜けているので何のことかは理解できませんが 何にしても new Sound で Sound オブジェクト を作成して その音をストップさせたり再生させたりするか その音のボリュームを0にしたり100にしたりするか 何かそのような方法をとれば良いと思います。 ※ 別法   音を入れる専用のムービークリップでも作成して   そのムービークリップ内のタイムラインに   「同期」を「ストリーミング」に設定した音を配置し   そのムービークリップを再生させたり停止させても   良いかもしれません。

kaneko0407
質問者

補足

回答有難うございます。 質問が分かりづらくすいませんでした。 【レイヤー】 (1~30フレーム) レイヤー1:スクリプト レイヤー2:音(30フレーム分のデータ) レイヤー3:ボタン(再生・停止・一時停止) レイヤー4:背景 (31フレーム) レイヤー1:stop() フレームラベル:menu レイヤー2:空フレーム レイヤー3:ボタン(再生・停止・一時停止) レイヤー4:背景 各ボタンにはボタンアクションで 再生:on(release){ Play(); } 一時停止:on(release){ Stop(); } 停止:on(release){ gotoAndStop(31); } となっております。 レイヤー1の1フレーム目に質問で記載させて頂いた スクリプトを記入したところ、設定した時間内ならば 31フレームから始まりやりたいことに近づいた感じが しました。ただ、再生ボタンの反応が無く行き詰って しまいました。 これは、根本的に考え方がまちがっているのでしょうか?

関連するQ&A

  • SharedObjectが効かない

    FLASHで、一定時間内にアクセスするとオープニングを飛ばすスクリプ トを書いています。Javascriptのクッキーと同じスクリプトの「SharedObject」を使用しています。 www.hfm-kenchan.com/Lesson/log_qa/D0512073.htm こちらのサイトの解説とサンプルを使用させてもらい、作ってみました が、ページを更新しても1フレーム目からのアニメーションが始まって しまい、スクリプトが効いてません。 現在作っているファイルのアニメーションが25fps、171フレームまであるのが原因だと思いますが。 変数に入っている数字などを変えてみましたが、効きません。 同じサンプルでもレイヤー数がスクリプト用のレイヤーと合わせても3 レイヤー、フレーム数11フレームで作ると効きます。 スクリプトのレイヤーにさらに別のスクリプトを書き加えてやる必要があるのかと思いますが、スクリプト素人である為判りません。 どなたか判る方いらっしゃるでしょうか。お教え下さい。 1フレーム目に入るスクリプトを書いておきます。 span = 15; nowDate = new Date(); nowAC = nowDate.getTime(); cookie = SharedObject.getLocal("accessTime"); if (cookie.data.beforeAC != undefined) { Time = Math.floor((nowAC-cookie.data.beforeAC)/1000); cookie.data.beforeAC = nowAC; if (Time < span) { this.gotoAndStop("menu"); } } else { cookie.data.beforeAC = nowAC; } 使用ソフトはFLASH8、環境はWDXPです。どなたかお助け下さい。

  • FLASHでのアニメーション制作で秒数が狂います。

    FLASH CS6で15秒のアニメを作っています。 フレームレート29.97fpsで、フレーム数が450です。 モーショントゥイーンでキーフレームをつくるたびにだと思うのですが、 再生するとトータルの秒数が増えていました。 フレームレートもフレーム数も変わっていません。 再生すると最後に15sとなるのですが、途中のカウントが瞬間的に増えたり減ったりするので実際は15秒以上の再生時間になるのです。 説明が難しくうまく伝えられないのですが、 原因はなんでしょうか? はじめてのflash制作で困っています。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • Flashゲームでの時間制限

    ActionScript2.0でミニゲームを作っています。 1分間の時間制限でその時点で獲得した点数によりジャンプするフレームを変えて違うメッセージを表示するようにしたいと思っていますが、旨く行きません。 ゲームのフローは以下のようになります。 まず、 1スタートボタンを押す。 2タイムを計る。 3timeと言う変数を設定したアクティブテキストボックスに60と表示する。 460秒経ったら獲得した点数をチェックする。 5獲得した点数により3カ所のフレーム名をつけたフレームにジャンプする。 フローのうち1はうまく言ってゲームは開始できています。 点数の加算も旨くできてます。 しかし、時間を表示しても60と固定になったままで カウントダウンしません。 カウントダウンがやりにくい場合は経過時間を秒で表示する事も考えています。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • FLASH LITE1.1 制限時間を任意に設定

    FLASH LITE1.1でクイズの制限時間を任意に設定しようとしているのですがうまくいきません。 やろうとしていることは、 ユーザーが入力テキストに制限時間(秒)を入力し、その時間が経過したら特定のフレームに跳ぶ、 ということです。 具体的には次のようにしています。 入力テキストの変数を「lmt」としてルートの2フレームに配して停めておき、*キーでスタートさせます。 ルートの3フレームにMC「c_mc」を置き、ダイナミックテキストの変数「cnt」を設定して、「c_mc」の1フレームから10フレームをループさせることで秒数を表示し(10fps)ます。 そして、ルートの3フレームに次のASを書いています。 tellTarget("/c_mc"){play();} if(lmt == /:cnt){gotoAndPlay("tokutei");} if の条件がうまく書けていないかと思うのですが、evalを使ったり、""を使ったりしても結局うまくいきませんでした。 おわかりになる方、ぜひご教授いただきたいと思いますので、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • getTimer() について

    変数として、何秒経過したか、という値を使用するために getTimer() を使用して経過秒数を取得しています。 1回目は0秒から始まるのでいいのですが、2回目、3回目となるとズレが出てきますよね。 で、getTimer()を行うたびに、0から始めたいのですが、どのようにすればいいのでしょうか?

    • ベストアンサー
    • Flash
  • 困っています・・・集めたフラッシュが見れなくなってしまいました

    先日、eMacからiMac G4に乗り換えました。 eMacの時からフラッシュムービを集めていて、クイックタイムで再生していました。フラッシュムービー自体は外付けHDに保存していました。 その外付けHDを、iMac G4につないでフラッシュムービーを確認しようとしましたら、アイコンがすべて白くなっていました。最初はデータが壊れたと思い、念のためeMacで確認しましたら、問題なく再生も出来ました。 OSはどちらも10.4.3です。 クイックタイムのバージョンですが eMac/Version 7.0.3, Player Version 6.5 iMac/Version 7.0.3,Player Version 7.0.3 になってます。 せっかく集めたフラッシュムービーをみれるようにする良い方法があれば教えて下さい。 どうかよろしくお願いいたします。

    • ベストアンサー
    • Mac
  • 経過時間を表示させたい(C言語)

    今以下のようなプログラムを作っています。問題の部分だけ載せておきます。  ・  ・  ・ a=0; b=0; time(&t1); for(○;△;□){ X番目の素数を表示させるアルゴリズム; time(&t2); b=t2-t1; if(a<b){ a=b; printf("%d秒経過...\n",a); }  ・  ・  ・ これですと経過時間は 1秒経過... 2秒経過... 3秒経過...  ・  ・  ・ と表示されるのですが、僕が目指しているのは、例えば、2秒経過したら「2秒経過...」という表示を「1秒経過...」を消してそのところに表示させたいのです。 つまり、まるで秒数の部分だけ変化しているように見せたいのです。 もし、やり方が分かる方がいましたら教えていただけると嬉しいです。ぜひともよろしくお願いします。

  • A.swf→B.swfへのジャンプして音楽再生 Flash MX6

    私のしたいこと ----------質問ここから------------------------- (1)A.swf再生終了後(C.htmlという名前に貼付)    ↓ (2)A.swf最後のタイムフレームから  B.swf(D.htmlに貼付)の60フレームへジャンプ(1~59までのフレームを無視するため)再生終了 ----------ここまで----------------------------- D.htmlとC.html はフレームで分けて表示しているのです。 フレーム1  フレーム2 | D.html  | C.html  | | (B.swf) | (A.swf)  |   となっておりフレーム1は実際left"0"にして隠しているので見えてません。B.swfは音楽の再生のみです。 要はA.swfの動画が終了すると、B.swfへジャンプして 音楽を再生するので、図のフレーム2からサブページ へいっても音楽は流れたまま・・というのが目標です。どうか、よろしくおねがいします。 その他の参考 上記ファイルはすべて同じディレクトリにて保存

    • ベストアンサー
    • Flash
  • 2回目以降の訪問でFlashをSkipさせる方法について

    表題の方法について、以前の質問や他サイトを参考にSharedObjectというものを 使用するという事は分かったのですが、以下の方法をとったところ、初めての訪問でも Movieが再生されず、最終フレームで止まったままとなってしまいます。 どこが間違っているのか皆目検討が尽きません。 今のFlaファイルは ■先頭フレーム:ラベル名「startMovie」 ■2フレーム目 フレームActionとして var my_so = SharedObject.getLocal("MyCookie"); if (my_so.data.haveVisited != 1) { my_so.data.haveVisited = 1; my_so.flush(); this.gotoAndPlay("startMovie"); } else { this.gotoAndStop("endMovie"); } ■最終フレーム:ラベル名「endMovie」 ボタンのオブジェクトActionとして on (release) { this.gotoAndPlay("startMovie"); } フレームActionとして this.stop(); となっています。 どうしたら初めての訪問でMovieが再生され、2度目の場合は 最終フレームでSTOP、REPLAYボタンで再生、という風にできるでしょうか。 どうかアドバイスの程宜しくお願い致します。

  • FLASHでループ再生を制限するAS

    Flashで音楽に合わせループ再生するアニメーションを作っています。 Web等で調べたActionScriptを使い音楽に合わせた回数で止まるように入力したつもりですが、止まらず、またループ再生してしまいます。 どのような記述をすればよろしいのでしょうか? 複数のレイヤーがあるので、1フレーム目に var loop_cntA:Number = 0; とloop_cntAと変数を宣言して、 最後のフレームに loop_cntA = Number(loop_cntA)+1; if (Number(loop_cntA)<25) { gotoAndPlay(1); } else { stop(); } と入力し24回目までループするように設定したつもりです。 しかし、止まってくれず何度もループしてしまいます。 どのように記述するのが正しいのでしょうか? ご指導お願い致します。

専門家に質問してみよう