2012-03-16 3 views
0

빠른 질문이되기를 바랍니다. 배열을 사용하여 내 라이브러리의 일부 무비 클립에 동적으로 액세스하는 데 문제가 있습니다.AS3 : 라이브러리 개체에 동적으로 액세스하기

은 기본적으로 내 배열은

var monarray:Array =("AAACBCBCAABBC").split(""); 

지금, 내 라이브러리는 세 개의 동영상 클립을 보유하고 .. 문자의 무리를 보유하고있다. 그들은 다음 AS3 연계 있습니다 몬스 테라를 monsterB monsterC

내가 내가 예를 들어 배열 ..에서 나는 위치에 따라 객체의 새로운 인스턴스를 생성한다 싶지 monarray 인덱스 [0에 ], 내가

이 내가 노력이 효과를 달성하기 위해 사용하고있는 코드입니다 .. 몬스 테라 추가 할 할 : 그러나

var b = new monster[monarray[i]]; 
b.x = mouseX; 
b.y = mouseY; 
addChild(b); 
i ++; 

, 내 .SWF를 컴파일 할 때,이 오류가 발생합니다 :

Scene 1, Layer 'Layer 1', Frame 1, Line 9 1086: Syntax error: expecting semicolon before leftbracket. 

필자는 당연히 제대로하지 않았기 때문에 이것을 이해합니다. 그러나 배열을 사용하여 특별히 색인화 된 인스턴스를 호출했습니다.

이것은 noobish이지만 미안하지만 이동 중에도이 세 라이브러리 인스턴스를 어떻게 동적으로 선택할 수 있는지 잘 모르겠습니다.

미리 감사드립니다.

해리.

+0

만약 당신이 무엇을 얻었습니까 – mgraph

답변

0

하지 않도록 시도는 :

대답은 위의 정의에 의해 올바른 비록
var mst = getDefinitionByName("monster"+monarray[i]) as Class; 
var b = new mst; 
+0

여기에 컴파일 에러가 없지만 이벤트를 트리거하면이 에러가 나옵니다 : TypeError : Error # 1007 : Non- 건설자. \t at Untitled_fla :: MainTimeline/addmonster() – hazdog

+0

@hazdog 지금 보십시요 (코드 업데이트) – mgraph

+0

완벽하게 작동합니다. 정말 고마워요! – hazdog

1

, 그것은 여전히 ​​당신이 뭘 하려는지 달성하는 "해키"방법입니다. 새로운 몬스터 유형을 동적으로 추가하는 방법을 원한다면 위의 방법을 사용하라고 제안하지 않습니다. 설명하려고 노력하겠습니다.

런타임에 새로운 괴물 유형을 연결하려면 위의 방법을 사용하십시오.

external.swf (언급 한 몬스터의 정의가 포함되어 있습니다!)를로드하는 base.swf가 있습니다. base.swf가 이미 배포되어 있으므로 변경하지 않으려면 위의 방법으로 충분합니다.

예를 들어, 런타임에 배포 할 다른 유형의 몬스터를 이미 알고 있다고 가정 해보십시오. 대부분의 게임에서 그렇습니다. 팩토리 클래스를 만들고 상속을 사용하는 것이 좋습니다 (IMonster 인터페이스 만들기 !) 그리고 팩토리 클래스는 A, B, C 등을 새로운 몬스터를 잡아 먹기위한 입력으로 사용할 수 있습니다.

관련 문제