使用 for 循环添加新类以确定具体要添加的类

Posted

技术标签:

【中文标题】使用 for 循环添加新类以确定具体要添加的类【英文标题】:adding a new class using a for loop to determine which class specifically to add 【发布时间】:2018-09-28 05:04:08 【问题描述】:

我创建这个帐户是为了问这个问题,因为研究字符串和测试一大堆不同的东西最终没有任何效果。您应该能够看到我在此处尝试使用此代码段执行的操作,但该代码段对我不起作用。如果我硬输入“Level1”而不是“Level[i]”,一切正常。

for (var i = 0; i<=100; i++)

    if (levelOn == i)
    
        var Lv:Level[i] = new Level[i];
        addChild(Lv)  
    

我在项目文件夹中有 100 个标有“level1”、“level2”等的关卡文件。我正在尝试通过使用 forloop 来访问某个级别以将某个级别添加到屏幕(levelOn = 56 意味着编译器会将类“Level56”添加到屏幕。) 我认为我的想法是正确的,但我无法让它发挥作用,我得到的只是这个错误

第 24 1086 行:语法错误:左括号前应有分号。

如果有人有更有效的方式来访问应用程序中的“级别”(它具有相同的基类但存在细微差别),请按正确的方向发送给我。

谢谢!!!!!!

【问题讨论】:

你尝试过类似var LvClass:Class = getDefinitionByName("Level"+levelOn) as Class; var Lv = new LvClass();的方法吗? 这个 var Lv:Level[i] 不正确,你不应该像那样动态声明变量类型。您可以选择通用或未指定的类型,例如 var Lv:Object 或 var Lv:*。 @kaarto 您好,感谢您的回复。 @kaarto 您好,感谢您的回复。这个注释掉的代码完全符合我的需要 //var Lv:Level1 = new Level1 //addChild(Lv) 但是这个建议做的代码会出错:ReferenceError: Error #1065: Variable Level1 is not defined/ at global /flash.utils::getDefinitionByName() 似乎正确读取了“Level1”,但无法识别。有任何想法吗?谢谢! 嗯,这听起来很奇怪。如果您尝试使用getDefinitionByName("Level1"),也会出现同样的错误? 【参考方案1】:

试试这个:

var i:int;
var Lv:Level[i] = new Level[i];
    addChild(Lv) 
for (i=0; i<100; i++)
    if(LevelOn=i)

【讨论】:

抱歉,这个没用。我要做的就是让程序基本上运行这段代码: var Lv:Level1 = new Level1 addChild(Lv) 完美运行。但不是“级别”前面的“1”,“1”可以使用数学转换为任何其他数字。此编号的更改将允许访问存储在文档文件夹中的不同类。 (例如 Level1、Level2、Level3 等,它们都有自己的调整和细微差别,然后可以使用代码作为子级添加到阶段。)有什么想法吗?

以上是关于使用 for 循环添加新类以确定具体要添加的类的主要内容,如果未能解决你的问题,请参考以下文章

数据未保存到 Parse Cloud Android

如何在for循环中切换单击按钮的类?

vue中v-for循环的时候为啥要添加:key属性

js中for循环和while循环在使用的时候有何区别?

在 Java 中在运行时扩展或添加新类

php 创建一个新类以在app / Macros / Routing中注册Route宏