2013-07-28 2 views
0

그래서 나는 적 AI를 연구 중이며 타이머에 따라 플레이어를 향해 한 번씩 돌기를 원합니다. 모든 코드가 복잡해 지지만 여러 클래스를 사용하고 있으며 플레이어에게 AI로 액세스 할 수있는 글로벌 포인트를 만드는 데 많은 어려움을 겪고 있습니다.actionscript의 글로벌 포스 포드 문제

내가 쓴 : 공공 var에 playerGlobalPos : 포인트 = localToGlobal (새 포인트 (PlayerTank.x, PlayerTank.y))를

그러나이 오류 메시지가 온 유지 :

1119 : 액세스 정적 유형 Class를 사용하는 참조를 통해 정의되지 않은 속성 y가있을 수 있습니다.

난 그냥 뭔가 그냥 작동하지 않을 것 알려줍니다, 바로 그런 적 클래스의 변수 playerGlobalPos을 참조하고 인식 jsut 코드를 가질 수 있는지 확실하지 않습니다. 나는 여러 클래스 프로그래밍에 익숙하지 않기 때문에 변수를 다른 클래스로 전송하면 문제가 생길 수 있습니다.

이 자료에 대한 도움이 있으면 매우 감사하겠습니다.

답변

1

분명히 PlayerTank은 개체 (인스턴스) 이름이 아닌 클래스 이름입니다. 플레이어가 X와 Y 중 어느 것을 사용해야하는지 두 개의 탱크를 제어한다고 가정 해보십시오. 따라서 적군은 플레이어의 탱크 인스턴스에 어떻게 든 도달 할 수 있어야합니다. 하나의 플레이어와 하나의 탱크가 있지만 학습을위한 가장 좋은 방법은 AI 클래스에 정적 var를 사용하는 것입니다. 당신이 당신의 전장을 만들 때 당신이 등, AI, 플레이어, 장애물을 모두 배치하고 AI 루틴 내에서 참조하는 곳이기 때문에

public static var player:PlayerTank; 

는 한 번 플레이어 인스턴스를 할당합니다. 이러한 playerGlobalPoint var은 정적 일 수도 있지만 가능한 경우 new Point()을 호출하지 않고 해당 X 및 Y를 정기적으로 업데이트해야합니다. localToGlobal()을 호출해도 호출 당 하나의 Point 개체가 생성되지만 두 개를 만들지 않아도됩니다.