【问题标题】:other ways of getting instances besides getChildByName()除了 getChildByName() 之外的其他获取实例的方法
【发布时间】: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


【解决方案1】:

getDefinitionByName() 可能在这里工作。它看起来像你想要的,但我从未亲自使用过。

【讨论】:

  • 是的,从它的声音来看,这就是你想要的。您需要为库中的每个剪辑设置链接(单击库中每个 MovieClip 的属性并检查 ActionScript 的导出)。指定的类名将是必需的字符串。然后使用 getDefinitionByName 应该看起来像 var myClass:Class = getDefinitionByName("className") as Class; var img:MovieClip = new myClass();
  • getDefinitionByName 不只是返回类而不是该类的特定实例吗?在进入lookHere之前,我已经创建了类的实例。
【解决方案2】:

我认为您只想使用取自“e.target.name”的名称来查找特定的影片剪辑?

我认为您没有单击要修改的相同目标。 一种解决方案是将所有 mc 保存在一个数组中,然后通过它循环比较它们的名称,然后返回匹配的那个。

【讨论】:

  • 那行得通,我只是希望 AS3 有一个方法或类,可以让我使用它的名称查找和调用对象的实例。
  • getChildbyName("") 就是这样一个函数,但正如您所注意到的,它仅适用于以某种方式添加到 displayList 的 displayObjects。将所有创建的对象的引用保存在数组/向量中通常是一个好主意,这样可以在不再使用时轻松处理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-14
  • 2015-12-08
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
相关资源
最近更新 更多