【发布时间】:2010-07-07 14:13:38
【问题描述】:
我有很多 MovieClip,每个都有一个类似“mcDummyClosed”的名称,然后是实例名称“slideDummyClosed”。另一个 MovieClip 有一个链接,例如slideDummyClosed,然后我称之为 DummyClosed。我将 MouseEvent.CLICK 事件添加到 DummyClosed。
现在,如果不将 slideDummyClosed 添加到舞台或任何其他 MovieClip,我可以使用包含其名称的字符串获取该实例吗?
我尝试过使用 getChildByName() ,但这似乎只有在我之前已经添加了要查找和添加的 MC 时才有效。 我的代码如下所示:
public function lookHere(e:MouseEvent){
//this is the function called by e.g. DummyClosed
currentView.removeChildAt(0); //remove the MC that was here before
var slideName:String = 'slide' + e.target.name; //the name of the instance
currentView.addChild(??); //how do I add slideName (e.g. slideDummyClosed) here?
}
【问题讨论】:
-
如果您使用 FlashDevelop 并导出符号,将自动为您生成具有所有适当成员名称的存根类。基本上去掉了 getChildByName 步骤。我倾向于最终得到一个名为 com.company.project.AFunnyAnimation 的符号,然后我在我的项目中创建一个名为 com.company.project.FunnyAnimation 的类,该类继承 AFunnyAnimation(通过 SWC 的导出公开)。这样,在 FunnyAnimation 类中,我可以使用普通成员表示法访问 AFunnyAnimation 的所有命名成员。不过,这确实是一个工作流程问题。
-
一开始我把它读作“McDummyClosed”,比如“McDonalds”,而不是“moveclipDummyClosed”,这让我哈哈大笑。通过为变量提供“sirDouble”或“mrFloat”等等级来对变量进行分类可能会很有趣。无论如何,您似乎需要在创建对象实例时按名称跟踪它们,您可以通过按名称将它们添加到 flash.utils.Dictionary 对象中,然后稍后按名称检索实例。
标签: flash actionscript-3