Actionscript 3 如何使用开关?

Actionscript 3 如何使用开关?,actionscript-3,Actionscript 3,我的问题是,哪一个更好用?如何正确使用switch语句。我是否应该使用变量等。我提前感谢您的回复。“随机文本,因为我需要很多解释,否则它不会让我发布。” 或 我最后做了什么(编辑) 最后的结果,谢谢大家 var config:Object = { "1":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 }, "2":{ "paddWidth":50, "blockWidth"

我的问题是,哪一个更好用?如何正确使用switch语句。我是否应该使用变量等。我提前感谢您的回复。“随机文本,因为我需要很多解释,否则它不会让我发布。”


我最后做了什么(编辑)

最后的结果,谢谢大家

var config:Object = {
               "1":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 },
               "2":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 },
               "3":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 },
               "4":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 },
               "5":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 },
               "6":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 },
               "7":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 },
               "8":{ "paddWidth":50, "blockWidth":200, "blockHeight":100 }
            };

            stage.addChild(new lvl( 
                        config[level_id].paddWidth,
                        config[level_id].blockWidth,
                        config[level_id].blockHeight,
                        level_id
                        ));

你的情况没有多大区别,但我同意后者。这样可以减少代码重复(即,如果您想更改级别的父级,则会发生什么情况,因此您没有使用
stage.addChild
,而是使用
someContainer.addChild
,使用第一种方法,您必须使用someContainer替换stage的每个实例,而使用第二种方法仅替换到位)

如果您担心代码行,可以将变量存储在一行:

x = 57; y = 107; z = 157;

作为一种完全不同的方法,我将创建一个
Level
类,该类具有
x
y
z
属性以及方法
load

然后,我将创建游戏中所有关卡的实例,并使用适当的值加载任何一个相关的关卡

样本:

public class Level
{
    public x:int;
    public y:int;
    public z:int;

    public function Level(x:int, y:int, z:int)
    {
        this.x = x;
        this.y = y;
        this.z = z;
    }

    public function load(stage:Stage):void
    {
        // This is where the Level will do resource consuming stuff, like get
        // added to the stage, create level elements, etc.
    }
}
然后只需创建所有关卡并将其存储在阵列中:

var levels:Array = [
    new Level(50, 100, 120),
    new Level(65, 70, 12)
];
这意味着现在只要有这样的东西,就可以轻松加载您想要的任何级别:

function loadLevel(lvl:int):Level
{
    var level:Level = levels[lvl];
    level.load();

    return level;
}

还可以将所有值存储在某些数组中。并通过索引访问它们

var lvlx:Array = [50, 51, 52, 53, 54, 55, 56, 57];
var lvly:Array = [100, 101, 102, 103, 104, 105, 106, 107];
var lvlz:Array = [150, 151, 152, 153, 154, 155, 156, 157];

var lvlIndex:int = level_id - 1;
stage.addChild(new lvl(lvlx[lvlIndex], lvly[lvlIndex], lvlz[lvlIndex]));
你甚至可以把它做成一个二维数组,但我认为每个x、y和z的数组都很简单,而且比在数组中存储对象更快

一个非常好(且快速)的选择是使用向量,并使用快速表示法:

var lvlx:Vector.<int> = new <int>[50, 51, 52, 53, 54, 55, 56, 57];
var lvlx:Vector.=新的[50,51,52,53,54,55,56,57];
另一个选项可能是(未测试的代码):


不要将变量存储在一行中!让我哭了:'(我会反对完全编辑问题,答案对于那些在更改之前没有看到问题的人来说就不那么重要了。这不再是一个问题,也不会帮助任何其他来的人了。好吧,我会把它改回来,谢谢你把它改回来。我很高兴地取消了我的反对票:)你忘了“=”; var-config:Object={谢谢@user1464312--刚刚添加了它。
var lvlx:Array = [50, 51, 52, 53, 54, 55, 56, 57];
var lvly:Array = [100, 101, 102, 103, 104, 105, 106, 107];
var lvlz:Array = [150, 151, 152, 153, 154, 155, 156, 157];

var lvlIndex:int = level_id - 1;
stage.addChild(new lvl(lvlx[lvlIndex], lvly[lvlIndex], lvlz[lvlIndex]));
var lvlx:Vector.<int> = new <int>[50, 51, 52, 53, 54, 55, 56, 57];
var config:Object = {
   "1":{ "x":50, "y":100, "z":150 },
   "2":{ "x":51, "y":101, "z":151 },
   "3":{ "x":52, "y":102, "z":152 },
   "4":{ "x":53, "y":103, "z":153 },
   "5":{ "x":54, "y":104, "z":154 },
   "6":{ "x":55, "y":105, "z":155 },
   "7":{ "x":56, "y":106, "z":156 },
   "8":{ "x":57, "y":107, "z":157 }
};
x = config[level_id].x;
y = config[level_id].y;
z = config[level_id].z;
stage.addChild(new lvl(x, y, z));