2013-05-02 5 views
0

안녕 아무도 나를 도울 수 있다면, 내가 이동 클립의 부하를 추가하고 액션 스크립트 3의 단계에이를 클릭 할 수 있도록 노력하고 궁금해, 나는 그 간격을 해결할 수 나중에 난 그냥이를 사용하여 추가하는 동안 오류가 점점 계속 :루프 액션 스크립트와 동영상 클립을 추가하면 3

for(var x:int = 1; x <= 10; x++) 
     { 

      var this["cardPrint"+x] :MovieClip = new this["card_"+x](); 
      this.addChild(this["cardPrint"+x]); 
      this["cardPrint"+x].addEventListener(MouseEvent.CLICK, this["click_"+x]); 

     } 

올바른 방향으로 포인트를 도움이 많이 당신

+0

이미 libary에 존재하는 무비 클립 당신의 "cardPrint"는 무엇입니까? – whodeee

+0

"cardPrint"의 인스턴스를 만들려고합니다 – user2344403

답변

0

this에게 현재의 클래스를 표시하는 범위 표시기입니다 감사합니다. 그래서 this["cardPrint"+x] 실제로 그 이름을 가진 변수를 찾기 위해 노력하고있다,하지만 당신은 이미 참조하는 변수를 선언 할 수 없습니다.

당신이 원하는 것을 할 수있는 유일한 방법은 다음과 같이이다 :

public dynamic class Foobar 
{ 
    public function Foobar() 
    { 
     for(var x:int = 1; x <= 10; x++) 
     { 
      this["cardPrint"+x] = new this["card_"+x](); 
      this.addChild(this["cardPrint"+x]); 
      this["cardPrint"+x].addEventListener(MouseEvent.CLICK, this["click_"+x]); 
     } 
    } 
} 

핵심 클래스 dynamic하고 있습니다. 즉, 런타임에 변수 이름을 생성하고 scope["varName"] 구문을 사용하여 문자열의 형태를 만들 수 있습니다. 당신이 플래시 Pro의 타임 라인에이 일을하는 경우 나는 당신이 느낌을 얻을로, 이것은 단순히 당신이 그것을 원하는 방식으로 수 없습니다. 루프에서 객체를 생성하고 위에 설명 된 구문을 사용하는 대신 이러한 방법으로 액세스 할 수 있도록 배열에 객체를 저장하는 것이 좋습니다.

생성 된 각 객체의 데이터 유형은 인스턴스화 된 것과 동일하므로 MovieClip 또는 그와 비슷한 것으로 설정할 수 없습니다.

"card_"+x

또한 객체 인스턴스화 (a Class) 할 필요가있다. 그렇지 않으면 인스턴스를 생성 할 수 없으며 항상 오류가 발생합니다.

저는이 문제에 대해 매우주의를 기울이고 싶습니다. 오류가 발생할 수있는 공간이 매우 크기 때문에이 구문을 사용하면 코드에서 읽기 어렵고 읽기 어려워집니다. 당신이의 인스턴스를 만들려고 -

+0

감사합니다. 드로잉 보드로 돌아가서 다시 시작하겠습니다. as3으로 시작합니다. 다시 감사합니다. – user2344403

+0

문제 없습니다. 나는이 방법 대신에 각 객체를 배열 (또는 일반'Object')에 저장하려고 시도하는 것이 좋습니다. 일반적으로,'this [ "varName"]'구문을 사용하는 것은 설정이 아니라 검색을 위해 사용됩니다. 분명히 예외가 있지만, 일반적으로 배열/벡터를 통해 처리하는 것이 가장 좋습니다. –

+0

다시 고마워, 내가 현재 시도하고있는 것, 바로 시작이다. 정말 고마워. – user2344403

관련 문제