게임에서 영화 클립을 제어 할 수있는 Catcher 클래스가 있습니다. 게임을 끝내고 다시 시작할 수 있도록 프로그래밍하려고합니다. 그래서 모든 것을 제거하고 메뉴로 돌아 가야합니다. 해결해야 할 간단한 것이어야하지만 어떻게 찾을 수없는 것 같습니다.AS3 : 오류 1009 오버플로없이 movieclip을 올바르게 제거하는 방법은 무엇입니까?
지금까지 나는 ourCatcher.parent.removeChild (ourCatcher)를 가지고 있습니다. 스테이지에서 내 영화 클립을 제거합니다. 무언가를 무대에 떨어 뜨리는 기능 중 하나를 중지시키는 if 문. SoundMixer.stopAll(); 음악을 멈추게합니다. 그러면 게임 오버플로 인 3 프레임으로갑니다.
괜찮아 보이지만 오류 콘솔에 1009 개의 오류가 넘쳐서 게임을 다시 시작하면 속도가 느려집니다. 포수가 무대에서 제거되어 null이 되었기 때문에 포수 내의 이동 기능이 아직 실행 중이며 오류가 발생하는 것으로 보입니다.
포수와 모든 것을 참조 해제해야한다는 것을 알고 있지만 내 상황에서는 온라인으로 문서를 찾을 수 없습니다. 모두는 내가 시도하고 작동하지 않는 다른 방법이있는 것 같습니다.
나는 캐릭터 이동 사용하고 포수 클래스의 두 가지 기능
:public function Catcher(stageRef:Stage)
{
stop();
this.stageRef = stageRef;
key = new KeyObject(stageRef);
addEventListener(Event.ENTER_FRAME, loop, false, 0, true);
}
//movement
public function loop(e:Event):void
{
if (key.isDown(Keyboard.A))
vx -= walkSpeed;
else if (key.isDown(Keyboard.D))
vx += walkSpeed;
else
vx *= friction;
//update position
x += vx;
//speed adjustment
if (vx > maxspeed)
vx = maxspeed;
else if (vx < -maxspeed)
vx = -maxspeed;
//stay inside screen
if (x > stageRef.stageWidth)
{
x = stageRef.stageWidth;
vx = -vx
}
else if (x < 0)
{
x = 0;
vx = -vx;
}
if (key.isDown(Keyboard.A))
{
scaleX = -1;
}
else if (key.isDown(Keyboard.D))
{
scaleX = 1;
}
movement();
// Jumping
jump += gravity;
if (y > stage.stageHeight /1.5)
{
jump = 0;
canJump = true;
}
if (key.isDown(Keyboard.SPACE) && canJump)
{
jump = -10;
canJump = false;
}
y += jump;
}
내가 CatchingGame라고 무대에서 일을 제거하고있어 다른 클래스와는 떨어지는 기능이 있습니다 객체, 나는 playerlives == 0 일 때 거기에 코드 위에 게임을 두었습니다.
if (playerLives == 0)
{
stop();
ourCatcher.parent.removeChild(ourCatcher);
SoundMixer.stopAll();
gotoAndStop(3);
}
나는이 게임이 내 첫 플래시 게임이기 때문에 아마 실수를 저질렀습니다. 이 게임이 내 게임을 마무리 짓는 마지막 단계이기 때문에 어떤 도움이라도 대단히 감사하겠습니다.
안녕하세요. 빠른 응답에 감사드립니다. 이것은 1009 오류를 제거하지만, 이제 2025 오류가 발생합니다. ArgumentError : Error # 2025 : 제공된 DisplayObject는 호출자의 자식이어야합니다. 나는 물건들이 엉뚱한 곳에 섞여 있을지도 모른다고 생각한다. flash.display : DisplayObjectContainer와 /로 removeChild() CatchingGame/removeCatcher() CatchingGame/moveObjects에서 \t에서 \t에서 \t는() – Zimbozo
당신은 존재하는 외부 어딘가에 아이를 제거하고 있습니다. removeCatcher가 – Gone3d
을 만든 동일한 프레임에 있고 부모가 클래스 인 경우 removeCatcher가 만든 프레임에 있는지 확인하십시오. – Gone3d