Flash As3.0 音データをインスタンス内に取り込む方法

このQ&Aのポイント
  • WinXP AdobeFlashCs4を使用して、音楽の再生ソフトでSoundMixer.computeSpectrumを使用して音に反応するビジュアライザーを作成しています。
  • 音データをインスタンス内に読み込むために、var sndCh: SoundChannel; var snd: Sound = new Sound(); snd.load(new URLRequest('music.mp3'))というコードを使用していますが、nullのオブジェクト参照のプロパティにアクセスできないエラーが発生します。
  • 問題の解決策がわからず、visualのインスタンス内でsndChを適切に呼び出す方法がありません。どなたか教えていただけないでしょうか?
回答を見る
  • ベストアンサー

【Flash As3.0 音データをインスタンス内にもってくる方法につ

【Flash As3.0 音データをインスタンス内にもってくる方法について】 WinXP AdobeFlashCs4 現在音楽の再生ソフトを制作しており、その中で、 SoundMixer.computeSpectrumで音に反応するビジュアライザーを作ってます。 visualというインスタンスを作り、 その中に音反応用のプログラムを書きました。 メインの1フレーム目に音を読み込むための↓ var sndCh:SoundChannel; var snd:Sound=new Sound(); snd.load(new URLRequest("music.mp3")) と停止・再生。 visualというムービークリップの1フレーム目に 音反応。 実際動いているのですが、どうしてもnullのオブジェクト参照のプロパティーにアクセスすることはできませんのエラーが出てしまいます。 addEventListener(Event.ENTER_FRAME, onEnterFrame); sndCh.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete); visualのインスタンス内のスクリプト内で sndChをうまく呼び出せてないことが原因というのはわかってるのですが 対処方法がわかりません。 ご教授いただけないでしょうか? よろしくお願いいたします。

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

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

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

snd.load(new URLRequest("music.mp3")) ↑が終わってから↓を実行すると、直ると思います。 addEventListener(Event.ENTER_FRAME, onEnterFrame); sndCh.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete);

関連するQ&A

  • 外部mp3のランダム再生について

    初めまして。 AS3.0をまだ勉強中で見よう見まねで作っている状態ですが、 なんとか完成させたいのでご教授ください。 ■目標 ボタンをクリックすると外部mp3が再生。 ただし、音声は複数ありクリックする度にランダムでmp3を再生するようにしたいです。 ■現状 現状はランダムに読み込んでクリックすると再生まではできたのですが、 何度クリックしても最初に読み込んだ同じ音声しか再生されません。 ひたすら繰り返しにすればよいのかと思い、2フレーム目を用意したところ、 ランダム再生にはなったのですが、何もしていない状態でもひたすら読み込みを続けてしまい理想の動きではありませんでした。クリックする度にランダムで読み込めればと思いますが、 どのように書けば良いのかわかりません、よろしくお願いします。 ・ボタンインスタンス名 play_btn ・ファイル mp3/sound0.mp3 mp3/sound1.mp3 mp3/sound2.mp3 ・環境 windows7 FlashCS5 ActionScript3.0 ************ソース*************** import flash.net.URLLoader; var rand_num:int = Math.floor(Math.random() * 2); var name_str:String = "mp3/sound" + rand_num + ".mp3"; var mp3_url:URLRequest = new URLRequest(name_str); var sndCh:SoundChannel; var snd:Sound = new Sound(); snd.load(new URLRequest(name_str)); play_btn.addEventListener(MouseEvent.CLICK, xPlayClick); function xPlayClick(evt:MouseEvent):void { sndCh = snd.play(0, 1); } *************END*************** よろしくお願いします。

    • ベストアンサー
    • Flash
  • as3でボタンにリンクをはる方法!

    質問ばかりで申し訳ないですが、お世話になります。 flashCS4&Actionscript3を使っているものです。 「ボタンにリンクをはる方法を探しています。 (どうしても 1093のシンタックスエラーになってしまい、困っています。)」 現在作成しているものは、以下のような構造です。 ************************************************************* ステージ ↓ムービークリップ【インスタンス名(menu_mc)】 ________________________________________ ・ボタン【インスタンス名(btn1_btn)】 ・ボタン【インスタンス名(btn2_btn)】 ・ボタン【インスタンス名(btn3_btn)】 ________________________________________ *************************************************** menu_mcの中で、以下のように記述しました。 btn1_btn.addEventListener(MouseEvent.CLICK,gotowebpage1); function gotowebpage1(event : MouseEvent) :void { navigateToURL(new URLRequest("​http://www.yahoo.co.jp"));​ } btn2_btn.addEventListener(MouseEvent.CLICK,gotowebpage2); function gotowebpage2(event : MouseEvent) :void { navigateToURL(new URLRequest("​http://www.yahoo.co.jp"));​ } btn3_btn.addEventListener(MouseEvent.CLICK,gotowebpage3); function gotowebpage3(event : MouseEvent) :void { navigateToURL(new URLRequest("http://www.yahoo.co.jp")); } すると、1093のシンタックスエラーになってしまいます。 うまく動作させる為には、他にどんな作業を行ったらいいのでしょうか、 よろしくお願いします!!!

    • ベストアンサー
    • Flash
  • actionscript 3.0 の外部リンク

    初めて質問させていただきます。 Flash CS3 のactionscript3.0にて、サイト内リンクのボタンを作成したのですが、 フラッシュを読み込んだ時点で、インスタンスthe URL4がポップアップで開いてきてしまいます。 そのような記述をしていないのでどうしたら良いか分からず… 何かお知恵をお貸しいただけると幸いです。 よろしくお願い致します。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ↓実際に書いたacitonscriptです。URLはダミーです。 //theURL1という変数に代入し、URLRequestのインスタンスを生成 var theURL1:URLRequest = new URLRequest("http://www.111/A.html"); var theURL2:URLRequest = new URLRequest("http://www.222/B.html"); var theURL3:URLRequest = new URLRequest("http://www.333/C.html"); var theURL4:URLRequest = new URLRequest("http://www.444/D.html"); navigateToURL(theURL1); navigateToURL(theURL2); navigateToURL(theURL3); navigateToURL(theURL4); // イベントリスナーの登録 A_btn.addEventListener(MouseEvent.CLICK,gotoURL1); B_btn.addEventListener(MouseEvent.CLICK,gotoURL2); C_btn.addEventListener(MouseEvent.CLICK,gotoURL3); D_btn.addEventListener(MouseEvent.CLICK,gotoURL4); // URL1へジャンプする function gotoURL1(event:MouseEvent):void { var theURL1:URLRequest = new URLRequest("http://www.111/A.html"); navigateToURL(theURL1,"_self"); } // URL2へジャンプする function gotoURL2(event:MouseEvent):void { var theURL2:URLRequest = new URLRequest("http://www.222/B.html"); navigateToURL(theURL2,"_self"); } // URL3へジャンプする function gotoURL3(event:MouseEvent):void { var theURL3:URLRequest = new URLRequest("http://www.333/C.html"); navigateToURL(theURL3,"_self"); } // URL4へジャンプする function gotoURL4(event:MouseEvent):void { var theURL4:URLRequest = new URLRequest("http://www.444/D.html"); navigateToURL(theURL4,"_self"); }

  • Flash as3.0版ソース  ボタンで内容遷移、うまくいかない…

    こんにちは。 Flash as3.0勉強始めてばかりです。 下記のソースのエラーはボタンを押したたびに、表示した内容はどんどん重ねています。たとえば、(1)ボタンを押した場合、(1)の内容を表示されまして。(2)ボタンを押したとき、画面には(1)+(2)の内容を表示されています。 いろいろ調べましたんですが、なかなかうまくいかないです。 ご解答をよろしくお願い致します。 詳細ソース ーーーーーーーーーーーーーーーーーーーーーー // イベントを設定 Button_tsr.addEventListener ( MouseEvent.CLICK , onClick1 ); Button_gaiyou.addEventListener ( MouseEvent.CLICK , onClick2 ); Button_message.addEventListener ( MouseEvent.CLICK , onClick3 ); Button_jigyou.addEventListener ( MouseEvent.CLICK , onClick4 ); Button_saiyou.addEventListener ( MouseEvent.CLICK , onClick5 ); Button_toiawase.addEventListener ( MouseEvent.CLICK , onClick6 ); // ローダーオブジェクトを作成し配置 var loader_obj : Loader = new Loader(); stage.addChild (loader_obj); loader_obj.x = 85; loader_obj.y =97; // 画面クリックをするとonClickが動作するイベント function onClick1 ( event:MouseEvent ) { // URLRequestを設定 var url0:URLRequest = new URLRequest( "Top.swf" ); // 実際にページに飛ぶ loader_obj.load ( url0 ); } function onClick2 ( event:MouseEvent ) { // URLRequestを設定 var url1:URLRequest = new URLRequest( "概要.swf" ); // 実際にページに飛ぶ loader_obj.load ( url1 ); } function onClick3 ( event:MouseEvent ) { // URLRequestを設定 var url2:URLRequest = new URLRequest( "Message.swf" ); // 実際にページに飛ぶ loader_obj.load ( url2); } function onClick4 ( event:MouseEvent ) { // URLRequestを設定 var url3:URLRequest = new URLRequest( "サービス.swf" ); // 実際にページに飛ぶ loader_obj.load ( url3); } function onClick5 ( event:MouseEvent ) { // URLRequestを設定 var url4:URLRequest = new URLRequest( "情報.swf" ); // 実際にページに飛ぶ loader_obj.load ( url4); } function onClick6 ( event:MouseEvent ) { // URLRequestを設定 var url5:URLRequest = new URLRequest( "問合せ.swf" ); // 実際にページに飛ぶ loader_obj.load ( url5); }

  • [as3]flashで外部phpの読み込み

    外部phpを読み込みechoで表示した値をFlash上のダイナミックテキストに表示させたいのですが、どうしても上手くいきません。 ■現状は以下のようになっています。 ・外部phpファイルにはechoにて、contents=******************** という出力結果がでます。 ・ダイナミックテキストを作りダイナミックテキスト名がname_strになっています。 ・as3のルートの1フレーム目に以下のようにasを書いています。 import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLVariables; import flash.events.Event; // [2] URLLoaderとURLRequestインスタンスの生成 var myLoader:URLLoader = new URLLoader(); var myRequest:URLRequest = new URLRequest("http://localhost.*******.php"); // [3] ロード完了時の処理をイベントリスナーに登録 myLoader.addEventListener(Event.COMPLETE, onComplete); // [4] 外部テキストファイルのロード実行 myLoader.load(myRequest); // [5] リスナー関数の定義 function onComplete (eventObject:Event) { var my_str:String = eventObject.target.data var myVars:URLVariables = new URLVariables(my_str); for (var name_str:String in myVars){ trace([name_str, myVars[name_str]]); } } ・環境はxamppにてローカルで作業をしています。 初心者でとんちんかんなことをしていまっているかもしれませんが、何卒よろしくお願い致します。

    • ベストアンサー
    • Flash
  • as3 変数のスコープについて

    xmlの読み込みをしていますが、 最後のtraceで内容が表示されません。nullになります。 var myXML:XML; var imgSrc:String ; var url:URLRequest = new URLRequest("test.xml"); var xmlLoader:URLLoader = new URLLoader(); xmlLoader.dataFormat = URLLoaderDataFormat.TEXT; xmlLoader.load(url); xmlLoader.addEventListener(Event.COMPLETE, comp); function comp(event:Event):void { myXML = XML(xmlLoader.data); imgSrc = myXML.img[0]; } trace(imgSrc);←ここがnullです。 function内でtraceすると問題なく表示されるのですが、 一体どうしてでしょうか。 ご教授お願いいたします。

    • ベストアンサー
    • Flash
  • AS3.0 イベントリスナーについて

    お世話になります。 簡単なflashアニメを作っています。 flash cs6 ActionScript3.0使用で、歴1ヶ月未満の初心者です。 1フレーム目に外部swfファイルを以下のように読み込んで再生させています。 var riku:URLRequest = new URLRequest("logoAnime.swf"); var yomu:Loader = Loader = new Loader(); yomu.load(riku); openingMc.addChild(yomu); 再生が終ったら、2フレーム目に移りたいのですが、具体的に どのようなコードを書いたら良いのでしょうか? 今まで色々な参考書やウェブサイトを見て勉強し、イベントリスナーメソッドを使ってマウスイベントでラベルを指定したページに移動、などはできるのですが、外部swfの再生が終ったら..となると混乱してエラー連発してしまいます。 イベントリスナーを使うのですよね? いまいち仕組みがまだ理解できていないので、丸投げのようになってしまい恐縮ですが、ご教授ください。 参考になるウェブサイト・過去回答を教えて頂くだけでも良いので、どうぞよろしくお願い致します。

    • ベストアンサー
    • Flash
  • AS2.0からAS3.0にうまく変換できません。

    AS2.0からAS3.0にうまく変換できません。 はじめまして、ActionScriptを勉強し始めたばかりの初心者です。 http://blog.bonkura.jp/2008/07/flash-4.html のページのスクリプトをas3.0に直そうと思って勉強しながらやってみたんですが、 どうもうまくいきません。 書いてみたコードは以下です。 だれか添削してもらえると助かります。宜しくお願いします! stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.LEFT; var bg:MovieClip = new MovieClip(); this.setChildIndex(bg, 1); var bgPic:MovieClip = new MovieClip(); this.setChildIndex(bgPic, 0); bgPattern(); function bgPattern():void{ var myMcl:Loader = new Loader(); var oListener:Object = new Object(); var UrL:URLRequest = new URLRequest(); UrL.url = "http://blog.bonkura.jp/2008/07/08/swf/bg.jpg"; myMcl.addChild(oListener); myMcl.load(UrL, bgPic); oListener.addEventListener( Event.COMPLETE, StageSize); for(var i:Number=0; i<stage.width/100; i++){ for(var j:Number=0; j<stage.height/100; j++){ var bgP:String = "bg"+i+j; bg.addChild(new (getDefinitionByName(bgP))); this.setChildIndex(bgP, i+j*100); bg[bgP].x = i * 100; bg[bgP].y = j * 100; } } } var alphaFlag:Boolean = new Boolean(); alphaFlag = true; bg.addEventListener(Event.ENTER_FRAME, onENTERFrame); bg.addEventListener(Event.RESIZE, bg.resizeHandler); stage.addChild(bg); stage.addChild(bgPic); function StageSize():void{ bgPic.x = (stage.width/2) - (bgPic.width/2); bgPic.y = (stage.height/2) - (bgPic.height/2); } // イベントリスナー function onENTERFrame(event:Event) { if(alphaFlag){ this.alpha -= 5; if(this.alpha <= 0){ alphaFlag = !alphaFlag; } } else{ this.alpha += 5; if(this.alpha >= 100){ alphaFlag = !alphaFlag; } } } function resizeHandler(event:Event = null):void{ bgPattern(); };

    • ベストアンサー
    • Flash
  • flashで音を消す設定について

    たびたびの質問で失礼します。 flashでクイズゲームを作成中です。 正解時と不正解時、それぞれに効果音("ok"、"ng")を設定しているのですが、音を出さないようにするためのボタンをつける方法がわかりません。 これまでに試したのは、ゲーム開始前の1フレーム目にボタンを設置して、以下のようにActionScriptを書いてみたのですが、まったく反応しません。 まったく見当違いのような気もするのですが解決方法が分かりません。 正しい方法をアドバイス、お願いいたします! -------------------------------------------- ※フレーム1に snd_1=new Sound(); snd_1.attachSound("ok"); snd_2=new Sound(); snd_2.attachSound("ng"); ※ボタンに on (release) { snd_1.stop( ); } on (release) { snd_2.stop( ); }

  • as3 addEventListenerの動的な生成について

    addEventListenerを動的に生成したいのですが、 下記のコードは動いてくれません。(エラーはないです。) //2つのインスタンスは適当な座標においてあります for(var num=0; num < 2; num++){ var mc = "test"+num+"_mc"; mc = new MovieClip(); mc.addEventListener(MouseEvent.CLICK, move); } function move(event:Event):void{ event.currentTarget.x = 0; } 上記のような場合は、 どのようにすればよいのでしょうか。 ご教授お願いいたします。

    • ベストアンサー
    • Flash

専門家に質問してみよう