안녕하세요.동일한 클래스를 공유하는 각 객체에 다른 변수에 영향을 미치지 않는 개별 변수
이것은 게임과 관련된 질문입니다.
동일한 클래스에 3 개의 개체 (세 고블린) 데이터가 입력되는 문제가 있습니다.
이 세 객체는 배열에 있고 해당 클래스에 데이터가 입력되고 배열로 초기화됩니다.
private var goblin1:Goblin = new Goblin();
private var goblin2:Goblin = new Goblin();
private var goblin3:Goblin = new Goblin();
그래서 위의 변수는 배열에 배치되었습니다.
private var aGoblinArray = new Array(container.goblin1, container.goblin2, container.goblin3);
개체를 배열에 배치 한 후 모든 고블린을 반복했습니다.
for (var i:int = 0; i < aGoblinArray.length; i++)
{
var goblin:Goblin = aGoblinArray[i];
}
는 지금은 for 루프에서 그러나 hitTest이 있고 그러나 hitTest은 다음과 같습니다
이 플레이어는 고블린의 안타 경우 의미
if (goblin.hitTestPoint(_character.x + 100, _character.y - 45, true))
{
goblinCanMove = false;
trace("lance hits");
//hitOnce
if (!hitOnce)
{
hitOnce = true;
trace("take on damage");
}
goblin.moveBack();
goblin.minusHealth();
}
, 그들은이 기능을 할 것입니다.
고블린 반에서 어떻게 생겼습니까? 내가 goblin1을 치면
public static var goblinLife; int;
goblinLife = 2;//put in main constructor
public function minusHealth():void
{
goblinLife --;
checkDeath();
}
private function checkDeath():void
{
if (goblinLife == 0)
{
parent.removeChild(this);
}
}
문제는, 다음 goblinLife는 것 = 1.이 모든 othet 고블린 의미 (goblin2를 3) 한 생활을해야합니다. 그들은 같은 수업을 공유하기 때문에.
goblin1이 죽으면 그는 제거되고 var goblinLife는 0이됩니다. 이제 다시 2로 재설정 할 수 있지만 문제의 절반이 수정됩니다.
내 질문은 각 고블린에게 자신의 개인 생명 시스템이 있는지 확인하는 방법이 있는지입니다. 미리 감사드립니다.
왜 goblinLife를 정적 변수로 설정합니까? – Pan
메모리가 필요하다면 개인 var로 변경합니다. 죄송합니다 팬 – Moynul
@Pan이 이미이 문제를 다루었지만'goblinLife'가 정적 인 사실이 문제의 원인입니다. static 키워드를 삭제하십시오. – Marty