如何在AS3中为flash连接变量

时间:2011-04-06 11:12:24

标签: flash actionscript-3

我正在尝试制作一个理想情况下你会告诉它进入下一个级别的功能,它会将所有内容排序,以便为您过渡到下一个级别。目前我用它来从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。

2 个答案:

答案 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;'进入你的包裹。