2013-05-19 4 views
0

내 프로젝트 (mp3 플레이어)에서 '재생'버튼을 클릭하면 정상 재생되지만 '다음 노래'버튼을 클릭하면 클릭 수가 두 배로 증가합니다 (2 클릭 2 번, 3 번 클릭). 3 번 ...) 그리고 백그라운드에서 2 곡 또는 3 곡 이상의 곡을 시작합니다. 왜 내 버튼 클릭 수가 증가합니까? 누군가 나를 도울 수 있니?플렉스 버튼 번 클릭

버튼 :

<s:Button id="PlayBtn" x="97" y="14" width="79" height="24" label="Play" 
      click="playButton_clickHandler(event)" enabled="true"/> 
<s:Button id="nastepnyBtn" x="354" y="14" width="79" height="24" label="=&gt;&gt;" click="nastepnyBtn_clickHandler(event)"/> 

작업 :

protected function playButton_clickHandler(event:MouseEvent):void {Odtwarzaj();} 

    protected function nastepnyBtn_clickHandler(event:MouseEvent):void {Odtwarzaj(1);} 

PlayCode :

function Odtwarzaj(tryb:Number=0):void{ 
      var wybrany:Object = dataGridId.selectedItem; 

      if(wybrany!=null){ 
       switch(tryb){ 
        case 0: 
         if(playing) 
         stop(); 

         WybranyKawalek=dataGridId.selectedIndex; 
         break; 
        case 1: 
         if(!Normalnie.selected){ 
          Alert.show("losuje"); 
         }else 
         { 
          if(WybranyKawalek==tablica.length-1){ 
           WybranyKawalek=0; 
          }else 
          { 
           WybranyKawalek=WybranyKawalek+1; 
          } 

         } 
         stop(); 
         //playing=false; 
         break; 
        case 2: 
         if(!Normalnie.selected){ 
          Alert.show("losuje"); 


         }else 
         { 
          if(WybranyKawalek==0){ 
           WybranyKawalek=tablica.length-1; 
          } 
          else{ 

           WybranyKawalek=WybranyKawalek-1; 
          } 
         } 
         stop(); 
         //playing=false; 
         break; 

        } 


        Alert.show("test="+test+" tryb="+tryb+" wybrany:"+WybranyKawalek+" t.l="+tablica.length+" dg.si="+dataGridId.selectedIndex); 


        playingLable.text=tablica.getItemAt(WybranyKawalek).artysta+" - "+tablica.getItemAt(WybranyKawalek).tytul; 
        file = new File(tablica.getItemAt(WybranyKawalek).URL_PLIKU); 

        if(!playing){ 
         muzyka=new Sound(); 
         muzyka.addEventListener(IOErrorEvent.IO_ERROR, errorHandlerMusic); 
         muzyka.addEventListener(Event.COMPLETE, loadCompleteMusic); 
         muzyka.load(new URLRequest(file.url));//, context 

         } 


      }else{ 
       Alert.show("Zaznacz plik do odegrania!"); 
      } 

      test++; 
     } 

Playstart 기능 :

 private function play(pos:Number=0):void{ 
      playing=true; 
      kanal=muzyka.play(pos,trans); 
      refresh(); 
      addEventListener(Event.ENTER_FRAME, displayProgressInSec); 
     } 
+0

나는 당신이 무엇을 요구하고 있는지 완전히 이해하지 못한다. 그러나 만약 당신이 어딘가에 이벤트 리스너를 추가하고 있다고 추측해야만한다면 결코 제거하지 마십시오; 기능을 여러 번 호출하게합니다. – JeffryHouser

+0

"stop()"기능을 추가 할 수 있습니까? 나는 문제가있을 수 있습니다 생각 – codingbuddha

답변

1

여기에서 문제는 단추를 쳤을 때마다 addEventListener (Event.ENTER_FRAME, displayProgressInSec)를 호출하지만 결코 제거하지 않는 것입니다. 청취자를 추가 할 때마다 누적되어 모두가 입력 프레임 이벤트에 응답합니다.

+0

좋아, 내가 그것을 :) 수정 위대한 기능 Odtwarzaj (tryb : 수 = ​​0) : 무효 { \t \t \t \t var에 wybrany : 개체 = dataGridId.selectedItem; \t \t \t \t removeEventListener (Event.ENTER_FRAME, displayProgressInSec); \t \t \t \t if (wybrany! = null) { – krootki