我正在尝试制作一个理想情况下你会告诉它进入下一个级别的功能,它会将所有内容排序,以便为您过渡到下一个级别。目前我用它来从1级到2级......
level1.GoButton.addEventListener(MouseEvent.CLICK, myClick);
function myClick(eventObject:MouseEvent) {
if (levelText == "Password"){
//mc level transition
removeChild(level1);
var level2 = new level_2();
addChild(level2);
//bring effects to top
setChildIndex(screen_FX, numChildren - 1);
//bring border to top
setChildIndex(Border, numChildren - 1);
//diable layer mask mouse
level2.masking.mouseEnabled = false;
//play mc and transition effects
level2.gotoAndPlay(1);
} else {
wrong.play(0, 1);
}
}
我在想,如果你能以某种方式将函数传递给一个可以连接变量名的变量,例如
removeChild(level[i]);
var level[i+1] = new level_[i+1}();
addChild(level[i+1});
此外,我需要这样做,以便检查levelText ==按Enter键的任何内容,以及鼠标点击GoButton。
答案 0 :(得分:3)
这是一种正确的方法:
removeChild(getChildByName("level" + i.toString()));
var levelClassName:String = "level_" + (i+1).toString();
var levelClass:Class = getDefinitionByName(levelClassName);
var level:DisplayObject = new levelClass();
level.name = "level" + (i+1).toString();
addChild(level);
您不需要更改变量名称,因为它是本地的,并且在下次执行myClick
时不会存在。
答案 1 :(得分:0)
我赞成你的回答Kodiak,因为它帮助我解决了我的问题,经过几个小时寻找正确的方法来做这件事。非常感谢!但是,在使用您的代码时,我遇到了一些错误(至少Flash CS5不喜欢您做过的一些事情)。因此,如果遇到其他任何人碰巧碰到这个问题,我必须做的就是让它在Flash中运行。
removeChild(getChildByName("level" + i.toString()));
var levelClassName:String = "level_" + (i+1).toString();
var levelClass:Class = getDefinitionByName(levelClassName) as Class;
var level:DisplayObject = new levelClass;
level.name = "level" + (i+1).toString();
addChild(level);
差异实际上只是一些语法,但它导致了错误。具体来说,getDefinitionByName不需要重新键入一个字符串(也不是它似乎通过':String'可能'作为字符串'或者如果它甚至需要它可能会更好?)。它还给出了一个对象和一个类之间的不匹配错误,所以我不得不在行中添加'as Class'。踢回一些错误的另一个地方就是'levelClass:Class'。我发现它根本不需要输入,但再次':Class'不被编译器所喜欢。我相信这只是用于输入'var levelClass:Class'中的变量,否则你必须输入'levelClass as Class'或'Class(levelClass)'。我是一个编码菜鸟,所以很有可能我错了,但无论如何,这是我必须使用的代码才能使这项工作。另外不要忘记'import flash.utils.getDefinitionByName;'进入你的包裹。