2013-06-19 4 views
0

배열을 작성했습니다. 히트 테스트가 발생하면 숫자를 배열에 푸시해야합니다. 그러나 myArray.push를 사용하면 번호가 입력되고 myArray.push를 다시 호출하면 번호를 다시 입력하고 배열에 2 개의 숫자가있는 대신 동일한 번호의 숫자가 입력됩니다. 그래서, 내가 얼마나 많은 시간을 밀 었는지에 관계없이 trace (myArray.length)를 사용하면, 저장된 1 개의 숫자가 계속 유지된다.배열이 제대로 채워지지 않습니다 AS3

if (hitTestObject(target.hit)) { 
    //pushes a number into an array 
    myArray.push(); 

    //checks array length 
    if (myArray.length == 3) { 
     //do stuff 
    } 
} 

나는 숫자, 문자열 및 myArray.push()의 매개 변수 인 Math.random()하지만, 난 항상 단 1 개 항목에있는의 같은 결과를 얻을 시도했다 : 이 내 코드입니다 내 배열.

public var myArray:Array = new Array(); 
+0

. 대부분의 경우 배열을 다시 만들 때마다 코드에서 알 수는 없습니다. –

답변

1

당신은 배열에 뭔가를 밀어 있습니다 는 참고로, 이것은 내가 내 변수를 작성하는 방법입니다. 시도해보십시오 :

myArray.push(myArray.length); 

그러나 배열을 만드는 것보다는 숫자를 늘리는 것이 더 나을 것 같습니다. 배열은 나중에 참조 될 객체의 컨테이너입니다. 따라서 배열의 세 번째 객체가 실제로 '2'라는 것을 추적 할 필요가 없다면 ... 배열은 쓸모가 없습니다. 숫자를 생성하고 매번 변수를 증가 시키십시오. 이와 같이 :

// Declared outside of the function 
var integer:int = 0; 

// 
if (hitTestObject(target.hit)) { 
    integer = integer + 1; 
    // likewise you could use ++integer or integer++; 

    if (integer == 3) { 
     //do stuff 
    } 
} 
+0

그래서 실제로 배열의 길이를 밀어 넣으시겠습니까? –

+0

그래, 숫자 대신 int를 myArray.push에 넘겨 주었다. 그래서 myArray.push (1) 대신 myArray.push (int)를 사용했다. 그게 맞습니까? 아니면 내 코드가 기적적인 버그에서 작동하고 있습니까? –

+0

배열의 길이는 누를 때마다 자동으로 증가합니다. 물론 처음에는 길이가 0입니다.하지만이 코드 덩어리를 누를 때마다 길이가 증가합니다. 본질적으로 [0,1,2,3,4,5,6 등]과 같은 배열을 제공합니다. – Corey

1

코드에 따라 실제로 배열에 아무 것도 넣지 않습니다.

올바른 구문은 다음과 같습니다 당신은 더 많은 코드를 게시 할 필요가

myArray.push(something); 
+0

그래, 내가 다른 숫자, 문자열, 그리고 수학을 사용했습니다. 이상, 내가 말했듯이 –

+0

당신은 무엇을하고 있는지 전혀 알지 못합니다. 한발 물러서서 배열에 대해 배우는 것이 가장 좋을 것입니다. 그리고 제가 말한 것은 당신에게 신비가되지 않을 것입니다. 코드가 비슷한 오해로 가득 차있는 경우가 많으므로이 프로세스가 도움이되지는 않습니다. – prototypical

+0

예하, 당신 말이 맞아요. 시행 착오를 통해 나는 최선을 다합니다. 그래서 나는 그것이 내가하려고했던 것이지, 나는 돌아가서 몇 가지 것을 다시 배우게 될 것입니다. –

관련 문제