2014-04-08 1 views
0

이것은 내가받는 오류입니다. 방금 모든 코드를 클래스로 옮겼습니다. 타임 라인과 수업 간에는 매우 복잡해집니다. "PopUpItem"이라는 링크 속성이있는 MovieClip이 있고 클래스가 활성화 될 때마다 항목이 화면에 3 초 동안 표시된 다음 인벤토리로 이동합니다. 타임 라인에 있었지만 전에는 작동하지 않았지만 더 이상 작동하지 않았습니다. 어떤 제안?타이머 클래스의 오류

[SWF] VQuest % 20V2.swf - flash.utils의 정의에서 감압 :: POPUPITEM에서 타이머() () POPUPITEM :: POPUPITEM : 2] 후에 2,955,884 바이트

package { 
import flash.utils.Timer; 
import flash.display.MovieClip; 
import flash.events.MouseEvent; 
import flash.events.TimerEvent; 
import flash.events.Event; 

public class PopUpItem extends MovieClip { 
    var popUpTimer: Timer = new Timer(1000, 3); // 3 seconds 
    var popUpItem: MovieClip = new PopUpItem; 
    var i = 0; 

public function popUpFunction() { 
     popUpTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete); 
    } 

public function itemReceived(received) { 
     for (i = 0; i < 1; i++) { 
      addChild(popUpItem); 
      popUpItem.popUpAnimation.gotoAndStop(received); 
      popUpItem.x = 400; 
      popUpItem.y = 250; 
      popUpItem.itemText.text = "You got a " + received + "." 
      popUpTimer.start(); 
      popUpItem.play(); 
     } 
    } 

public function onComplete(event: TimerEvent): void { 
     removeChild(popUpItem); 
     i = 0; 
    } 

} 
} 

답변

0

가장 먼저 볼 수있는 문제는 PopUpItem 클래스의 생성자 함수에서 PopUpItem 클래스의 인스턴스를 만드는 것입니다. 스택 오버플로 오류가 발생할 가능성이 큽니다.
PopUpItem 클래스가 기본 '문서'클래스 인 경우 속성 패널에서 Flash에 대한 링크 만 있으면됩니다.
PopUpItem 클래스가 다른 클래스 내부에서 인스턴스화되도록하려면 다른 클래스의 변수에 인스턴스를 저장하십시오. PopUpItem 생성자의 변수에 PopUpItem 인스턴스를 저장하지 마십시오.

+0

예, 이전에는 MainTimeline에있었습니다. 그 전체 변수를 "this"로 대체 했으므로 적어도 게임은 이제 오류없이 재생됩니다. 고마워. – Apf42589