【问题标题】:AS3 getDefinitionByName is not a functionAS3 getDefinitionByName 不是函数
【发布时间】:2013-04-15 15:12:29
【问题描述】:

当我尝试将动态文本字段的文本设置为影片剪辑中另一个动态文本字段的文本时,我收到了一个 AS3 错误。

这是我的代码:

repairMachine.screen.gotoAndStop(5);
repairMachine.screen.brandName.text = repairMachine.screen.getDefinitionByName(whichBrand).text;

第二行是发生错误的地方。

brandName 是 MovieClip 中名为 Screen(screen) 的动态文本字段,位于 MovieClip RepairMachine(repairMachine) 内。

这是我设置哪个品牌的地方:

whichBrand = "brand" + ((repairMachine.screen.selectionArea.y - 6) / 22);

此代码有效,我成功地将 whichBrand 跟踪为正确的实例名称。

我现在的问题是:为什么会出现错误 #1006 getDefinitionByName is not a function。 我该如何解决?

提前致谢!

你的,

米兰。

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

    getDefinitionByName() 不属于某个类。目前,您正尝试将此函数作为repairMachine.screen 的方法调用。

    您应该删除它,并将其作为普通函数调用:

    getDefinitionByName(whichBrand);
    

    除此之外,您正在尝试访问实例。 getDefinitionByName() 用于获取类定义,而不是实例。你在关注getChildByName()

    【讨论】:

    • 当我使用 getChildByName() 时,我得到错误文本和 DisplayObject 之间的隐式强制。因为我想访问实例名称等于 whichBrand 的动态文本字段中的文本
    • @user2281425 getChildByName() 返回一个DisplayObject。您需要将其转换为TextField。试试(getChildByName(whichBrand) as TextField).text;
    • 现在我收到错误过滤器运算符不支持屏幕类型。
    • 我通过将 ( 放在所有内容前面来修复它。谢谢你的回答 Marty。
    • @user2281425 是的,一定要记住左括号;它包含你的演员的结果。
    【解决方案2】:

    你得到这个错误是因为 getDefinitionByName 不是一个方法

    repairMachine.screen
    

    getDefinitionByName 在 flash utils 中。所以你必须像这样使用它:

    import flash.utils.*;
    
    getDefinitionByName('my.fully.qualified.class.name');
    

    您提到 whichBrand 指向正确的实例名称。

    getDefinitionByName 方法不是用于获取实例

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      相关资源
      最近更新 更多