在shuffling数组之后,variable = array [index]给出0,trace(array [index])给出正确的数字

时间:2011-08-16 09:34:07

标签: actionscript-3

我认为最简单的解释一下:

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 个答案:

答案 0 :(得分: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] */