2012-11-11 85 views
0

我在as3中構建音頻序列器。我有一個Track類,它包含播放一次播放按鈕,一個音量滑塊和16個複選框來打開/關閉16個步驟中的每一個。在舞臺上有8個Track的例子。我想知道的是如何唯一標識按鈕/滑塊/複選框正在被點擊?我在哪裏加載每個聲音? boleow是我的軌道等級選擇一個actionscript 3類的元素

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(); 
    } 
} 
} 

回答

0

這將是更好,如果你有一個加載目前存在的音頻文件的能力(軌道)和用戶界面,這將觸發對集體訴訟,而不是修建視覺元素將中央音頻播放器處理也播放音頻。你必須先學會OOP原則,才能夠把事情做對(權是指:靈活,可重複使用,易維護/擴展):

書籍:

  • 基本的ActionScript 3.0 - Moock
  • 對象面向對象的ActionScript 3.0 - Elst,Jacobs,Yard

直接回答你的問題每個DispalyObject都有一個名稱屬性,你可以用它來識別被點擊的內容 - 不理想。

問候

+0

纔有可能使用類似.... masterContainer.track1.setSoundName(「drum.mp3」),設置聲音在主時間軸上; track1是舞臺上第一首曲目的實例名稱。我正在緊張工作的最後期限,並會看看as3的書。 – Lonergan6275

+0

如果您會閱讀這些書籍,我建議您會了解我在說什麼 - 使用Flash IDE僅適用於視覺材料 - 不要在其中編碼,也不要在時間線上放置代碼 - 因爲您有能力上課應該使用外部代碼編輯器:) –

相關問題