• 締切済み

AS2でhittestを用いてシンボルにカーソルが触れたときに効果音をループせずに一回鳴らすというのはどうすれば良いのでしょうか?

AS2でhittestを用いてシンボルにカーソルが触れたときに効果音をループせずに一回鳴らすというのはどうすれば良いのでしょうか? AS2でhittestを用いてシンボルにカーソルが触れたときに効果音をループせずに一回鳴らすというのはどうすれば良いのでしょうか? 現在はボタンのオーバーで音を鳴らしているのですが、クリックしたままカーソルを移動させてシンボルに触れたとき音を鳴らしたいので困っています。 現在のファイルは↓です (右クリックで保存お願いします) http://www.geocities.jp/tales_house/kira2.fla http://www.geocities.jp/tales_house/kira2.swf 解決方法わかる方どうかよろしくお願いします。

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

みんなの回答

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

#1です。 #1を回答したあとしばらく考えていたのですが, > クリックしたままカーソルを移動させて > シンボルに触れたとき音を鳴らしたい これは『ひんと』と書かれたボタンをクリックするという意味でしょうか? つまり,  「『ひんと』と書かれたボタンをクリックした"後に",   マウスカーソルを移動させて,そのマウスカーソルが   ムービークリップなどのインスタンスに触れたときに   音を鳴らしたい。」 という意味でしょうか? もしそうであれば hitTest は要りませんよ。 #1同様, ☆(星形ムービークリップ) 内のフレームを2フレームにして, ボタンと同じように フレーム1 には最初に表示されている星の絵を置き, フレーム2 には回る星と音を配置します。 音は,ボタンと同じく,プロパティで同期を「イベント」に設定しておきます。 そういう ☆(星形ムービークリップ) を音の数だけ作ります。 そして☆をステージ上に配置し, それらにインスタンス名を付けます。 たとえば,3つの☆インスタンスをステージ上に配置し, それらに「star_mc0」「star_mc1」「star_mc2」というインスタンス名を付けます。 また, 『ひんと』と書かれたボタンには, 例えば「btn」というインスタンス名を付けます。 その場合, 3つの☆インスタンスとボタンが存在するメインのタイムラインには 次のようなActionScriptを書きます。 --------------------------------------------- // ☆の最終番号を登録 var star_last:Number = 2; // マウスがダウンしているかどうかのフラグの初期化 var down_flg:Boolean = false; // 「star_mc0」~「star_mc○」に関してのループ for (var i:Number = 0; i<=star_last; i++) { // 「star_mc?」 内ライムラインの再生を停止 _root["star_mc"+i].stop(); } // btnをクリックしたときの動作を定義 btn.onRelease = function():Void { // マウスがダウンしているかどうかのフラグをtrueにする down_flg = true; }; // 「star_mc0」~「star_mc○」に関してのループ for (var i:Number = 0; i<=star_last; i++) { // 「star_mc?」 にロールオーバーしたときの動作定義 _root["star_mc"+i].onRollOver = function():Void { // マウスがダウンしているかどうかのフラグがtrueのときのみ if (down_flg) { // 自分自身(star_mc?)をフレーム2で停止 this.gotoAndStop(2); } }; // 「star_mc?」 からロールアウトしたときと // 「star_mc?」 を外で放したときの動作定義 _root["star_mc"+i].onRollOut = _root["star_mc"+i].onReleaseOutside=function ():Void { // 自分自身(star_mc?)をフレーム1で停止 this.gotoAndStop(1); }; } --------------------------------------------- 以上です。 #1よりずっと簡単です。

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

1コのボタンの内部についてはわかりましたが, それにしても関係のない雑多なものが多いサンプルですね...。 関係ないものが多いわりには, 肝腎なFlashバージョンも書かれてなかったり(CS3らしいということは色々なバージョンで開いてからわかった), さらに肝腎な↓の意味もよくわかりませんし...。 > クリックしたままカーソルを移動させて > シンボルに触れたとき音を鳴らしたい 何をクリックしたままカーソルを移動させるのでしょうか?  「何でもない場所(Flashステージ上の任意の場所)で   マウスダウンした状態のままマウスカーソルを移動させて,   そのマウスカーソルが   ムービークリップなどのインスタンスに触れたときに   音を鳴らしたい。」 という意味と理解してよろしいでしょうか? (Flashに限らず,そういう奇妙な仕様のものを見たことがないので,  閲覧者にそのルールが理解できるかどうかは知りませんが...。) 作成にあたって,まず理解しておくべきことは, hitTestはムービークリップクラスのメソッドだということです。 つまり,hitTestの左側にはムービークリップが来る必要があります。  ムービークリップ.hitTest(マウスx座標, マウスy座標,true) したがってボタンにはhitTestは使えません。 また,仮にボタンにhitTestが使えたとしても, gotoAndStop() もムービークリップクラスのメソッドですから,  ボタン.gotoAndStop("_over"); や  ボタン.gotoAndStop(2); のようにボタン内のフレーム移動の指示はできません。 したがって, ☆はボタンではなく,ムービークリップで作成するのが良いと思います。 ☆(星形ムービークリップ) 内のフレームを2フレームにして, ボタンと同じように フレーム1 には最初に表示されている星の絵を置き, フレーム2 には回る星と音を配置します。 音は,ボタンと同じく,プロパティで同期を「イベント」に設定しておきます。 そういう ☆(星形ムービークリップ) を音の数だけ作ります。 そして☆をステージ上に配置し, それらにインスタンス名を付けます。 たとえば,3つの☆インスタンスをステージ上に配置し, それらに「star_mc0」「star_mc1」「star_mc2」というインスタンス名を付けます。 その場合, 3つの☆インスタンスが存在するメインのタイムラインには 次のようなActionScriptを書きます。 --------------------------------------------- // ☆の最終番号を登録(☆インスタンスの数によって変える) var star_last:Number = 2; // マウスがダウンしているかどうかのフラグの初期化 var down_flg:Boolean = false; // 「star_mc0」~「star_mc○」に関してのループ for (var i:Number = 0; i<=star_last; i++) { // 「star_mc?」 内ライムラインの再生を停止 _root["star_mc"+i].stop(); } // マウス監視用オブジェクト「mouseObj」を作成 var mouseObj:Object = new Object(); // マウスをダウンしたときの動作を定義 mouseObj.onMouseDown = function():Void { // マウスがダウンしているかどうかのフラグをtrueにする down_flg = true; }; // マウスをアップしたときの動作を定義 mouseObj.onMouseUp = function():Void { // 「star_mc0」~「star_mc○」に関してのループ for (i=0; i<=star_last; i++) { // 「star_mc?」 内ライムラインをフレーム1で停止 _root["star_mc"+i].gotoAndStop(1); } // マウスがダウンしているかどうかのフラグをfalseにする down_flg = false; }; // マウスが動いたときの動作を定義 mouseObj.onMouseMove = function():Void { // マウスがダウンしているかどうかのフラグがtrueのときのみ if (down_flg) { // 「star_mc0」~「star_mc○」に関してのループ for (i=0; i<=star_last; i++) { // 「star_mc?」 がマウスとヒットしていれば if (_root["star_mc"+i].hitTest(_root._xmouse, _root._ymouse, true)) { // その 「star_mc?」 内ライムラインをフレーム2で停止 _root["star_mc"+i].gotoAndStop(2); } else { // それ以外は 「star_mc?」 内ライムラインをフレーム1で停止 _root["star_mc"+i].gotoAndStop(1); } } } }; // マウスクラスのリスナーとしてmouseObjを登録 Mouse.addListener(mouseObj); --------------------------------------------- 以上です。 とにかく関係のないものは極力排除して, なるべく簡単でシンプルなサンプルで実現させてみることが肝腎です(=問題の切り分けが肝腎)。

関連するQ&A

  • カーソルを合わせたら効果音を鳴らせたい

    こんにちは。ホームページにおける効果音について教えてください。 現在、ホームページを作成していて、効果音を鳴らせるようにしようと 思っています。どのように鳴らせるのかというと、カーソルを合わせた ときに効果音がなるようにしたいのです。 LINK先などのボタンをクリックしたときに鳴るようにするのではあり ません。カーソルを合わせたときです。 わかる人はいませんでしょうか?今、効果音としてはwavファイルを もっています。 宜しくお願いします。

    • ベストアンサー
    • HTML
  • 効果音をループさせたい

    フリーで効果音を落とせるページからMP3を落としてきました。数秒の効果音で1Mもありません。この効果音を何十回か繰り返して数十秒、数分のMP3ファイルを作りたいと思います。ループで再生するメディアプレイヤーなどは見つかるのですが、同じ音をつなげて1つのMP3ファイルにするソフトウェアはないでしょうか?MP3ではなくてもWavでも何でもOKです。

  • 1つのボタンで音の違う2つの効果音を鳴らしたい

    ●1つのボタンで音の違う2つの効果音を鳴らしたい 『FlashCS3/WinXP/AS3.0/Player9 (AS経験なし)』 はじめまして。 Webサイトのコンテンツのメニューボタンを作っています。 【希望する動作】 1.マウスオーバーしたときにsound1.wavを再生 2.クリックしたときにsound2.wavを再生 現在はボタン編集で「オーバー」のところにsound1.wavを、「ダウン」のところにsound2.wavを設定しています。 しかし、これをムービープレビューして動作確認をしてみると、マウスカーソルをボタンに載せた時にsound1.wavが再生されるまでは良いのですが、クリックをしたときにもう一度sound1.wavが再生され、時間差でsound2.wavも再生されるため、結果、音が重なってしまいます。 効果音を各一回ずつ再生させるために、何か方法があるのでしょうか。 ネットや本で調べてましたが、解決できなかったのでどうか教えてください。よろしくお願いいたします。

  • ホームページに効果音を挿入する方法

    ホームページビルダー9でホームページを作りました。 効果音を挿入したいのですが、やり方がわかりません。 クリックしたり、カーソルが載ると効果音をだす様にするにはどうすればよいのでしょうか? それと併せて、カーソルを置くと説明書きのような文章が出るようにする方法も教えてください。 宜しくお願いします。

  • ホームページ作成時の効果音について

    現在、ホームページビルダーV8でホームページを作成中ですが、画像などでマウスのクリック・又はカーソルが来たときに効果音を鳴らしたいのですが、どのような方法で作成すればよいのか教えて下さい。

    • ベストアンサー
    • CSS
  • 動画の保存法

    http://pya.cc/pyaimg/pimg.php?imgid=29546やhttp://www.geocities.jp/fk_house/vip7371.swfの動画をダウンロードしてループして聞き続けたいのですがどうすればできるのでしょうか 回答お願いします

  • Flashで一部レイヤーだけループ再生

    Flashでホームページのトップページを作っています。背景の部分は一度だけ再生し、 タイトルの部分だけをループ再生したいのですが、 どうすればいいでしょうか。 以前質問があった、下記ページを見ました。 質問:FALSH一部レイヤーだけループ再生 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1069547 で、タイトル部分のレイヤーだけのflaファイルと、 背景部分のレイヤーだけのflaファイルにわけ、 タイトル部分のレイヤーを「新規シンボル」で ムービークリップにしました。 背景のレイヤーだけのflaファイルに、ムービークリップをswfファイルで書き出したファイルを読み込もうとしたのですが、できません。 なんだか混乱してきてしまったのですが、どなたか初心者でもわかるよう、手順を説明していただけませんか? 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • [AS3]ループするたびに変数等は新規生成される?

    Actionscript3.0 Adobe Flash Professional CS5 いつもお世話になっております。 独学でActionscript3.0を触っています。 基本的なことですが、調べても思っている答えが出てこないので質問させてください。 for文やシーンのジャンプなどによって、いわゆるループ処理をするたびに、「var」で生成されている変数やインスタンスはどんどん増えていくものなのでしょうか。 たとえば今私が作っているものですが シーン2にムービークリップ「botan1」~「botan4」があります。 どれかをクリックしたら、シーン3ないし4に飛びます。行き先はランダムで決めています。 そしてシーン3・4にある「戻る」ボタンをクリックしたらシーン2に戻ってくる仕組みです。 実際に実行した場合、シーン2に var Flag:int; var botan1:MovieClip=new MovieClip(); botan1.addEventListener(MouseEvent.CLICK,botan1Push) function botan1Push(e:MouseEvent){ gotoAndPlay(3);//実際はランダムに飛ぶ trace("ボタン1が押されました"); } //以下略 と書いてあったとして、初回実行時にFlagやムービークリップが生成され、またイベントリスナも生成されますよね。 そしてbotan1をクリック→シーン3に飛ぶ→シーン2に戻ってきたときに 新たにFlagやMC、イベントリスナは作成されたりするのでしょうか。 それとも、上書きでもされるのでしょうか。 変数やムービークリップだけでなく、「var urlReq:URLRequest=new URLRequest("URL");」などのURLリクエストやローダーについても気になります…。 AS3について調べていると、メモリ開放…とか、要らなくなったリスナはremove…とか書いてあるので、 もしシーンに戻るたびに生成されているならば、40回くらいループする上実際は上記よりももっと沢山生成するので、その容量たるや…?といった感じです。 本当に初歩的な質問で恐縮なのですが、どなたかご教授ください。。 (PrivateやPublicの違いすら分かっていません…)

    • ベストアンサー
    • Flash
  • サウンドの制御で・・・

    初心者ですが、教えていただけると嬉しいです。 簡潔にいうと、サウンドを再読み込みしたときに音を鳴らさない仕組みにしたいのです。 私が作成したデータなのですが、 メインのページ(main.swf)があり、そこにメニューの項目(外部の各1.swf、2.swf、3.swfをムービークリップに読み込む用に設定)があります。 メニュー項目をクリックすると外部にあるSWFを読み込むムービークリップがおいてあるフレームに移動する方法になっています。 main.swfにのみONOFFボタンを作成し、最初にONの状態で 音を鳴らし、ループするようにしてあります。 MCの中にAiffサウンドをいれ、そのプロパティに同期イベント繰り返し999の設定をしています。 メインのページ(main.swf)のONOFFボタン制御はきちんとできているようで、OFFとしたときに、外部SWFページを読み込むフレームに移動したときも同じようにサウンドは止まった状態です。 しかし、ONにしたとき、外部SWFを読み込むフレームに移動したとき音がループしてなり続けているのですが、メインのページに頭からもどったときに、最初に鳴らした音も続いたまま二回目の音が重なって鳴ってしまうのです。 何度も繰り返すと二十三十とダブってしまうのです。 そのため、再度メインに戻ったときに音を読み込まない方法を教えていただきたいのです。 説明不足かもしれませんが、不明な箇所ありましたら補足いたします。 どうか宜しくお願い致します。

  • Flvをループ再生したいのですが、seek()をしたときに生じるがたつきはどうにかならないのでしょうか?

    ビデオがあるキューポイントまで到達すると、seek()を使ってある時間までもどしてそこから再生、またキューポイントまで到達すると・・・以下無限ループ、という処理をしようとしていますが、seek()でジャンプした瞬間にゆがみが生じてしまいます。 このゆがみといか時間のずれをなくす方法はないでしょうか? http://test64.hp.infoseek.co.jp/qa/qa001/addASCuePoint_test.swf にて、そのswfを確認することができます。(10秒までいくと0秒にジャンプします) ちなみに、今作ろうとしているのはゲームの背景としての動画ループなのですが、そのゆがみが少しでもあるととても不自然になってしまいます、という状況です。 どなたか知恵をお貸しください。それとも、こういったゆがみを消すことはそもそも無理なのでしょうか? http://test64.hp.infoseek.co.jp/qa/ からflaファイルとasファイルをおとせます。

    • ベストアンサー
    • Flash

専門家に質問してみよう