使用 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 循环添加新类以确定具体要添加的类的主要内容,如果未能解决你的问题,请参考以下文章