« あけましておめでとうございます。 | Main | Flash Lite で横移動する携帯サイト »

onSoundComplete : AS2


supe.jpg
ちょっとsupeのwebsiteのFlashで作ったmp3 Playerのバグ潰しで結構時間かかったので自分的メモ。
 
曲の再生が終わったら次の曲へ、ってのを頼まれたんだが(一年以上前にも頼まれてたがFlashスキルが乏しかったからその時はうやむやにw)、最近はFull Flashのサイトも良く作るようになったので直してみた。
 
まず自分のサイトrenewしろよって話もあるが・・・
 

このプレイヤー、実に3年前の品。
その時はオレFlash触った事もなかったから友人に頼んだんだけれども、最近開いてみてびっくりした。
 
なにがって、まずversionが6。おぉ!って感じじゃねぇ?
んでactionscript 1.0。おい!って感じじゃねぇ?今3.0なのにさ。
 
んで、既存のものが"PlaySound()"のFuncでいちいち"new Sound();"を実行してた。
次の曲、前の曲、終わったら自動で次の曲、ってなスクリプトがいろいろあるなか、毎回実行してるな〜なんて思ってはいたんだが(気にはしてなかったんだが)
 
んでも、onSoundComplete以外では全部効くんスヨ。
だから盲目になってたんだけど。
 
とりあえず最初に
var hoge:Sound = new Sound();
にして、PlaySound()から"new Sound();"はずしたら動きましたとさ。
 
そんな話。
バグ(っつーかオレがアホ)潰しに2時間つかっちゃった。エヘ。
 
 
一応visitorさんの為に今回のスクリプト貼っときます。
(誰か検索で来るといいなー グヘへ)
 
_rootに記述:


stop(); // 実際再生される曲のArray var songlist = new Array("hoge1.mp3", "hoge2.mp3", "hoge3.mp3"); var songnum:Number = songlist.length; //再生リスト番号 var i:Number = 0; var titlelist = new Array("title1", "title2", "title3"); //サウンドオブジェクトを作成 var mymp3:Sound = new Sound(); mymp3.attachSound(songlist[i]); playing = "false"; // 再生ファンクション function playsong() { if (playing == "false") { //曲名 ダイナミックテキストに表示してね monitor = titlelist[i]; //mymp3 = new Sound();←これがいらんかった〜 mymp3.loadSound(songlist[i], true); playing = "true"; //再生中の表示項目。ダイナミックテキストに表示してね nowplaying = "Now Playing"; } } // いきなり再生させる playsong(); // 停止するファンクション。 function stopsong() { if (playing == "true") { monitor = ""; mymp3.stop(); playing = "false"; nowplaying = ""; } } // 次の曲を再生するファンクション。 function nextsong() { if (playing == "true") { if (i<(songlist.length-1)) { i++;

} else { i = 0; } monitor = titlelist[i]; stopsong(); playsong(); } } // 前の曲を再生するファンクション。 function previoussong() { if (playing == "true") { if (i>0) { i--; } else { i = songlist.length-1; } monitor = titlelist[i]; stopsong(); playsong(); } }; //曲が再生し終わったら以下を実行 mymp3.onSoundComplete = function() { //再生リスト番号を次へ if (playing == "true") { i++; //再生リスト番号が曲数に達していた場合 if (i == songnum) { //0番に戻す(ループ用) i = 0; } //再生開始 monitor = titlelist[i]; stopsong(); playsong(); } }




エラーとかでたらtrace("hoge");で追うべし。
 
汚いソースですんまそん。
 
ではでは。
Comment (2)
Goro:

なんかすっかりアクションスクリプトのプログラマじゃないスカ。
チャンビーで遊んだら楽しそうだね。

ats:

いやいやそんなことねーですよ。
ちろっと覚え始めただけでas3なんててもつけてないし。

チャンビーアプリ、なんかあったら発注かけてくださいw ヒマな時に遊ぶわー。

Post a comment