2011-04-25 7 views
0

아이템이 사라질 때마다 mp3가 재생되기를 기대하고 있습니다.이 아이템들은 startDelay 값에 따라 다른 시간에 페이드 인합니다. 그것은 나에게 가장 좋은 방법은 mp3를 재생할 페이드 인을 재생 spark.effects.Fade 클래스를 확장하고, play 함수를 재정의 한 다음 play이 호출 될 때 mp3 재생을하는 것입니다 (startDelay 이후라고 가정합니다). done), 그러나 이것은 작동하지 않습니다. 어떤 아이디어?ActionScript 액션 덮어 쓰기

public class FadeWithMusic extends Fade 
{ 
    public function FadeWithMusic(target:Object=null) 
    { 
     super(target); 
    } 

    override public function play(targets:Array = null, 
            playReversedFromEnd:Boolean = false): 
            Array /* of EffectInstance */ 
    { 
     var returnedValue:Array = super.play(targets, playReversedFromEnd); 

     var sound:Sound = new Sound(); 
     var urlReq:URLRequest = new URLRequest("urlString"); 
     sound.load(urlReq); 
     sound.play(); 

     return returnedValue; 
    } 
} 

답변

1

UPDATE 사용 타이머 소리 지연을 확인합니다.

package 
{ 
    import flash.events.TimerEvent; 
    import flash.media.Sound; 
    import flash.net.URLRequest; 
    import flash.utils.Timer; 
    import spark.effects.Fade; 

    public class FadeWithMusic extends Fade 
    { 
     private var soundTimer : Timer; 

     public function FadeWithMusic(target : Object = null) 
     { 
      super(target); 
     } 

     private function playSound(event : TimerEvent) : void 
     { 
      var sound : Sound = new Sound(); 
      var urlReq : URLRequest = new URLRequest("1.mp3"); 
      sound.load(urlReq); 
      sound.play(); 
     } 

     override public function play(targets : Array = null, playReversedFromEnd : Boolean = false) : Array /* of EffectInstance */ 
     { 
      soundTimer = new Timer(startDelay, 1); 
      soundTimer.addEventListener(TimerEvent.TIMER, playSound, false, 0, true); 
      soundTimer.start(); 
      return super.play(targets, playReversedFromEnd); 
     } 
    } 
} 
+0

분명히 전체 스크립트의 시작 부분에서만 재생됩니다. 만약 내가'fade.startDelay = 10000; fade.play ([label]);', 나는 소리가 10000 ms 후에 재생되기를 기대합니다. 대신 캔버스에'label'이 추가되면 재생됩니다. –

+0

또한'startDelay'가 올라갈 때'play'가'start'를 호출한다고 생각하기 때문에 제 자신의'start()'메서드를 작성하려고했습니다 (private를 재정의 할 수 없습니다). –

+0

@allie 죄송합니다. 먼저받지 못했습니다. 내 대답을 업데이트했습니다 –