Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在AS3中生成二维矢量_Arrays_Actionscript 3_Vector - Fatal编程技术网

Arrays 如何在AS3中生成二维矢量

Arrays 如何在AS3中生成二维矢量,arrays,actionscript-3,vector,Arrays,Actionscript 3,Vector,我可以这样做: var levelVector = new Vector.<Vector.<int>>(); levelVector[0] = new Vector.<int>(); levelVector[1] = new Vector.<int>(); levelVector[2] = new Vector.<int>(); levelVector[

我可以这样做:

        var levelVector = new Vector.<Vector.<int>>();
        levelVector[0] = new Vector.<int>();
        levelVector[1] = new Vector.<int>();
        levelVector[2] = new Vector.<int>();


        levelVector[0][0] = 0;
        levelVector[0][1] = 0;
        levelVector[0][2] = 5;
        levelVector[0][3] = 0;
        levelVector[0][4] = 0;
        levelVector[0][5] = 0;
        levelVector[1][0] = 0;
        levelVector[1][1] = 0;
        levelVector[1][2] = 5;
        levelVector[1][3] = 0;
        levelVector[1][4] = 0;
        levelVector[1][5] = 0;
        levelVector[2][0] = 0;
        levelVector[2][1] = 5;
        levelVector[2][2] = 2;
        levelVector[2][3] = 2;
        levelVector[2][4] = 2;
        levelVector[2][5] = 2;
levelVector = [[0,0,3,2,1],[1,1,2,2,2],[3,2,2,1,2]];
levelVector = [
              [0,0,3,2,1],
              [1,1,2,2,2],
              [3,2,2,1,2]
              ];
var levelVector:Vector.<Vector.<int>>=Vector.<Vector.<int>>(
    [
        Vector.<int>([0,0,3,2,1]),
        Vector.<int>([1,1,2,2,2]),
        Vector.<int>([3,2,2,1,2])
    ]
);
这样更有用:

        var levelVector = new Vector.<Vector.<int>>();
        levelVector[0] = new Vector.<int>();
        levelVector[1] = new Vector.<int>();
        levelVector[2] = new Vector.<int>();


        levelVector[0][0] = 0;
        levelVector[0][1] = 0;
        levelVector[0][2] = 5;
        levelVector[0][3] = 0;
        levelVector[0][4] = 0;
        levelVector[0][5] = 0;
        levelVector[1][0] = 0;
        levelVector[1][1] = 0;
        levelVector[1][2] = 5;
        levelVector[1][3] = 0;
        levelVector[1][4] = 0;
        levelVector[1][5] = 0;
        levelVector[2][0] = 0;
        levelVector[2][1] = 5;
        levelVector[2][2] = 2;
        levelVector[2][3] = 2;
        levelVector[2][4] = 2;
        levelVector[2][5] = 2;
levelVector = [[0,0,3,2,1],[1,1,2,2,2],[3,2,2,1,2]];
levelVector = [
              [0,0,3,2,1],
              [1,1,2,2,2],
              [3,2,2,1,2]
              ];
var levelVector:Vector.<Vector.<int>>=Vector.<Vector.<int>>(
    [
        Vector.<int>([0,0,3,2,1]),
        Vector.<int>([1,1,2,2,2]),
        Vector.<int>([3,2,2,1,2])
    ]
);
因为现在它实际上读起来像一个二维数组,或者网格,这将非常有用。我想我可以用数组这样做,那么有没有办法用向量呢?为一个大的二维向量填充每个值,每个值都有自己的代码行,很难查看、理解或编写。我是遗漏了什么还是这只是向量的一小部分


谢谢

是,但不能直接将二维数组(或数组数组数组)转换为向量向量。但你可以这样做:

        var levelVector = new Vector.<Vector.<int>>();
        levelVector[0] = new Vector.<int>();
        levelVector[1] = new Vector.<int>();
        levelVector[2] = new Vector.<int>();


        levelVector[0][0] = 0;
        levelVector[0][1] = 0;
        levelVector[0][2] = 5;
        levelVector[0][3] = 0;
        levelVector[0][4] = 0;
        levelVector[0][5] = 0;
        levelVector[1][0] = 0;
        levelVector[1][1] = 0;
        levelVector[1][2] = 5;
        levelVector[1][3] = 0;
        levelVector[1][4] = 0;
        levelVector[1][5] = 0;
        levelVector[2][0] = 0;
        levelVector[2][1] = 5;
        levelVector[2][2] = 2;
        levelVector[2][3] = 2;
        levelVector[2][4] = 2;
        levelVector[2][5] = 2;
levelVector = [[0,0,3,2,1],[1,1,2,2,2],[3,2,2,1,2]];
levelVector = [
              [0,0,3,2,1],
              [1,1,2,2,2],
              [3,2,2,1,2]
              ];
var levelVector:Vector.<Vector.<int>>=Vector.<Vector.<int>>(
    [
        Vector.<int>([0,0,3,2,1]),
        Vector.<int>([1,1,2,2,2]),
        Vector.<int>([3,2,2,1,2])
    ]
);
var levelVector:Vector.=Vector(
[
向量([0,0,3,2,1]),
向量([1,1,2,2,2]),
向量([3,2,2,1,2])
]
);
正如其他人所说(为了进一步解释,您似乎有点困惑),您可以使用将
数组
转换为
向量

var level:Vector.<int> = Vector.<int>([
    0, 0, 3, 2, 1,
    1, 1, 2, 2, 2,
    3, 2, 2, 1, 2
]);
var级别:向量向量([
0, 0, 3, 2, 1,
1, 1, 2, 2, 2,
3, 2, 2, 1, 2
]);
您可以嵌套对该函数的调用,以形成一个2D向量(您实际上不需要它——我建议您只使用一个平面向量):

var级别:向量向量([
向量([0,0,3,2,1]),
向量([1,1,2,2,2]),
向量([3,2,2,1,2])
]);
或者,您可以简单地使用预填充向量实例化,如下所示:

var级别:向量新的[
新的[0,0,3,2,1],
新[1,1,2,2,2],
新[3,2,2,1,2]
];
最后,您可以编写一个函数,将二维数组转换为二维向量:

function createLevelVector(level:Array):Vector.<Vector.<int>> {
    var levelVector:Vector.<Vector.<int>> = new Vector.<Vector.<int>>(level.length);
    for (var i:int = 0; i < level.length; i++) {
        levelVector[i] = Vector.<int>(level[i]);
    }
    return levelVector;
}

var level:Vector.<Vector.<int>> = createLevelVector(
    [
        [0, 0, 3, 2, 1],
        [1, 1, 2, 2, 2],
        [3, 2, 2, 1, 2]
    ]
);
函数createLevelVector(级别:数组):Vector。{
变量levelVector:Vector.=新向量(level.length);
对于(变量i:int=0;i
Ah!!圆括号!!谢谢我明天要试一试。我测试的时候它不起作用。不过,我修改了你的代码,并让它工作了。我试着编辑你的答案,这样我就可以接受它是正确的,但它被拒绝了。哦,好吧。也许你可以编辑它。它需要有一条线来构建数组,然后你可以按照你的方式填充它,这正是我想要的。因此,第一行将是
var levelVector:Vector..>=Vector。(3)
然后下一行可以是
levelVector=[//yada-yada,就像你说的那样
编辑答案不是正确的回应方式。你可以评论,或者添加你自己的答案,说明你是如何解决这个问题的。你对我使用的
(3)
是正确的。它没有导致编译错误(不确定原因),但它也没有添加任何有用的内容。我只是在没有添加任何有用的内容的情况下对其进行了测试,并且以任何方式工作,因此Flash必须忽略它,即使我使用的是严格模式和警告模式。另外,我不确定我在问题中说的什么,这听起来像是我在尝试将数组转换为向量。我只是尝试创建一个2D向量。谢谢你的帮助g这个问题的时间。我将测试每一个。你答案中的第二个代码块与@Vesper的建议相同。但这不起作用。正如我在回答中所说的,向量似乎需要在一行代码中创建,然后才能填充。至于我为什么要做2D数组,这是因为我不想迭代e其他地方深度控制函数的每个子向量。使用
向量
全局函数(如其他答案所示)是将数组转换为向量。它不是直接实例化向量(如我的第三个示例所做)。当然,差异主要是语义上的;最终得到的结果是相同的。