0

as3でオーディオシーケンサを構築しています。サウンドを 1 回再生する再生ボタン、ボリューム スライダー、および 16 の各ステップをオン/オフする 16 のチェック ボックスを含む Track クラスがあります。ステージ上には Track の 8 つのインスタンスがあります。私が知りたいのは、どのボタン/スライダー/チェックボックスがクリックされているかを一意に識別する方法です? そして、各サウンドをどこにロードしますか? boleow は私の Track クラスです

package 
    {
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.net.URLRequest;
public class Track extends MovieClip
{
    private var soundName:Sound;
    private var theChannel:SoundChannel;
    private var songName:String;
    public function Track()
    {
        // constructor code
        trace("track created");
        singlePlay.addEventListener(flash.events.MouseEvent.CLICK, handlePlayClick);
    }
    private function handlePlayClick(e:Event):void
    {
        trace("Play clicked");
        this.play();
    }       
    public function setSoundName(theName:String):void
    {
        this.songName = theName;
        soundName = new Sound();
        var req:URLRequest = new URLRequest(this.songName);
        soundName.addEventListener(Event.COMPLETE, playSound);
        soundName.load(req);
    }
    public function playSound()
    {
        theChannel = soundName.play();
    }
    public function stopSound():void
    {
        theChannel.stop();
    }
}
}
4

1 に答える 1

0

オーディオの再生も処理するビジュアル要素を構築する代わりに、異なるオーディオ ファイル (トラック) とそのクラスでアクションをトリガーする UI をロードする機能を備えた中央のオーディオ プレーヤーがあるとよいでしょう。OOP を正しく行うには、最初に OOP の原則を学ぶ必要があります (正しい意味: 柔軟で再利用可能で、保守/拡張が容易です)。

書籍:

  • Essential ActionScript 3.0 - Moock
  • オブジェクト指向 ActionScript 3.0 - Elst、Jacobs、Yard

あなたの質問に直接答えるために、各 DispalyObject には name プロパティがあり、これを使用してクリックされたものを識別できます - 理想的ではありません。

よろしくお願いします

于 2012-11-11T21:37:27.700 に答える