• 締切済み

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に今回経過ミリ秒を保存  } -------------------------------------------------------------------------------

みんなの回答

  • 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