다음은 길거리에서 시민을 생성하는 클래스입니다. 그들은 좌우로 걷고 어떤 방향으로 향할 것인지, 어떤 속도로 움직이는 지, 그리고 그들의 y 위치에 배정됩니다. 이전에 생성자에서 setUpCitizens() 함수를 사용했지만 수준과 수신기를 제거하는 데 문제가있어 ADDED_TO_STAGE 및 REMOVED_FROM_STAGE를 사용하고 싶습니다. I 클래스는 다음과 같이
AS3에서 생성자 매개 변수를 클래스로 변수로 전달
호출 :
package
{
import flash.display.*;
import flash.events.*;
import flash.utils.getTimer;
import flash.utils.Timer;
public class Citizen extends MovieClip
{
private var dx:Number;// speed and direction
private var lastTime:int;// animation time
public function Citizen(side:String, _speed:Number, yPos:Number)
{
var side = side;
var speed = _speed;
var yPos = yPos;
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
private function onAddedToStage(event:Event):void
{
setUpCitizens();
addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage);
}
private function onRemovedFromStage(event:Event):void
{
removeAllCitizens();
this.removeEventListener(Event.ENTER_FRAME,moveCitizen);
}
private function setUpCitizens():void
{
if (side == "left")
{
this.x = -40;// start to the left
dx = _speed;// walk left to right
this.scaleX = 1;// reverse
}
else if (side == "right")
{
this.x = 5720;// start to the right
dx = - _speed;// walk right to left
this.scaleX = -1;
}// not reverse
this.y = yPos;// vertical position
this.gotoAndStop(Math.floor(Math.random()*9+1));
// set up animation;
this.addEventListener(Event.ENTER_FRAME,moveCitizen);
lastTime = getTimer();
}
private function removeAllCitizens():void
{
removeEventListener(Event.ENTER_FRAME,moveCitizen);
parent.removeChild(this);
}
이 오류를 얻고있다
var c:Citizen = new Citizen(side,speed,yPos);
이는 부모 클래스 객체 레벨 1에서 호출됩니다. 나는 또한 생성 된 모든 아이들을 참조하고 게임을 빠르게하기 위해 모두 제거하는 데 어려움을 겪고 있습니다 ...
어떤 제안을 주셔서 감사합니다?