2013-10-04 3 views
1

저는 마침내 ActionScript 개발자가 HTML5와 JavaScript로 뛰어 들었습니다. 나는 CreateJS를 사용하고 있습니다. 나 같은 사람들에게 더 쉽게 전환 할 수있는 평판을 얻었습니다. 재귀 루프를 만들어 내 스테이지에서 중첩 된 객체를 알려 주려고합니다. 나는 분명히 아직 거기에 없다. 아무도 내가 잘못 가고있는 것을 지적 할 수 있습니까? 고맙습니다. 대신 아이가 컨테이너가 있는지 getNumChildren를 사용중첩 된 객체를위한 CreateJS 컨테이너 재귀 루프

recur(exportRoot); 

function recur(thisContainer) 
{ 
    console.log("recur()"); 
    for(var i=0; i<thisContainer.getNumChildren; i++) 
    { 
     console.log(thisContainer.getChildAt[i]); 
     if(thisContainer.getChildAt[i].getNumChildren !== null && thisContainer.getChildAt[i].getNumChildren !== isNaN()) 
     { 
      recur(thisContainer.getChildAt[i]); 
     } 
    } 
} 
+1

당신은 foo'은'NaN'가 대신 foo는'의''때는 isNaN (foo는)를 사용한다 '경우 테스트하려면! == 때는 isNaN()가' – Oriol

답변

1

, 당신은이를 사용해야합니다

private loopContaneir(objDisplay) { 
     for (var i= 0; i < objDisplay.numChildren; i++) { 
      var child = objDisplay.getChildAt(i); 
      if (child instanceof createjs.Container) { 
       loopContaneir(child); 
      } 
     } 
    } 
: easeljs-0.8.1에 대한

var child = thisContainer.getChildAt[i]; 
if (child instanceof createjs.Container) { 
    recur(child); 
} 

업데이트

+0

감사 @olsn,하지만 여전히 작동하지 않습니다 . 다음은 현재 가지고있는 내용입니다. 'recur (stage); // recur (exportRoot)도 시도했습니다. function recur (thisContainer) { console.log ("recur()"); for (var i = 0; i

0

내 가장 큰 문제 중 하나는 내가 사용하려고 시도했다는 것입니다 getNumChildren (존재하지 않는 속성) getNumChildren() (메서드). 이제는 올바르게 작동하고 있는데, 부분적으로는 instanceof을 제안하는 @olsn에게 감사드립니다.

recur(exportRoot); 

function recur(thisContainer) 
{ 
    console.log("recur()"); 
    var containerLength = thisContainer.getNumChildren(); 
    var thisChild; 
    for(var i=0; i<containerLength; i++) 
    { 
     thisChild = thisContainer.getChildAt(i); 
     console.log(thisChild); 
     if(thisChild instanceof createjs.Container) 
     { 
      recur(thisChild); 
     } 
    } 
} 
+1

작동하는 동안'thisContainer.getChildAt (i) '에 대한 변수를 사용하는 것이 좋습니다. 중요하지 않지만, 이것을 앱에서 자주 호출되는 유틸리티 메소드로 사용하면 로컬 변수를 사용하는 것이 다른 객체에있는 메소드 호출 인 getChildAt를 3x로 만드는 것보다 훨씬 빠릅니다. 그리고 그것은 또한 더 깨끗합니다 ;-) (자바 스크립트 엔진이 점점 더 빨라지고 있기 때문에 당신의 컴퓨터에서 아마 여러분의 컴퓨터에 차이가 있다는 것을 눈치 챘을 것입니다.) -하지만 어쨌든, 이제는 작동합니다 :) – olsn

+0

감사. ActionScript에서, 타입이있는'var' 문은 또한 약간의 오버 헤드를 가지고 있다는 것을 항상 이해하고 있으며, 수십 번 또는 수백 번 호출 될 때 루프에서 사용하는 것을 피하려고했습니다. 아마도 그것은 잘못 인도 되었습니까? 아마도 JavaScript가 다릅니다. 어느 쪽이든, 고마워. 귀하의 조언에 따라 답변을 편집하겠습니다. –

+1

아 물론. 방금 루프 앞에 'var' 문을 추가했습니다. 죄송 합니다만, 나는 아직도 언어의 변화에 ​​의해 다소 혼란스러워하고 있습니다. 특별히 엄격한 데이터 유형의 부족. 도움과 인내심에 감사드립니다. –