2011-08-16 37 views
0

我认为这将是最简单的解释这样的:洗牌阵列,变量=阵列之后[索引]给出0,跟踪(数组[索引])给出正确数量

num1 = arr2[upTo][0]; 
trace(num1); 

输出:0

trace(arr2[upTo][0]); 

输出:正确数目

其中ARR2是一个混洗阵列。

我的代码:

public class Main extends MovieClip { 
    var num1:int; 
    var num2:int; 
    var scoreArr:Array = new Array(); 
    var upTo:int = 0; 
    var arr2:Array = new Array(); 
    public function Main() { 
     for (var i = 1; i <= 9; i++) { 
      for (var j = 1; j <= 9; j++) { 
       scoreArr.push([i,j]); 
      } 
     } 
     while (scoreArr.length > 0) { 
      arr2.push(scoreArr.splice(Math.round(Math.random() * (scoreArr.length - 1)), 1)); 
     } 
     newQ(); 

    } 
    private function newQ():void { 
     num1 = arr2[upTo][0]; 
     num2 = arr2[upTo][1]; 
     trace(num1); //outputs: 0 
     trace(arr2[upTo][1]); //outputs: correct number 
    } 

回答

1

看来数据类型是不同的,跟踪是忽略了数据类型,同时显示。 和num1正在将该数据类型转换为int,同时得到分配,变为0. 您可以尝试比较typeof arr2 [upTo] [0]和num1吗?

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/operators.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6#typeof

一件事我在你的代码注意:

 num1 = arr2[upTo][0]; 
     num2 = arr2[upTo][1]; 
     trace(num1); //outputs: 0 ,Here num1 is assigned arr2[upTo][0] 
     trace(arr2[upTo][1]); /*outputs: correct number . But 
           here you trace arr2[upTo][1] and 
           not arr2[upTo][0] */ 
+0

啊! arr2 [upTo] [0]是一个对象。谢谢! – apscience