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