Actionscript 3 扩展MXML组件,引用不明确

Actionscript 3 扩展MXML组件,引用不明确,actionscript-3,apache-flex,mxml,mxmlc,Actionscript 3,Apache Flex,Mxml,Mxmlc,我在扩展MXML中的类时遇到了一些问题,我将尝试在这里进行解释,但我也上传了一个 假设我有两个班: game.implementation.base.view.MainView game.implementation.ipad.view.MainView 请注意,它们的软件包名称略有不同(其中一个用于ipad) 想法是ipad包的类将扩展base包的类 按照上述操作会产生错误: 对MainView的引用不明确。[生成的代码(使用-保留保存): 路径: D:\FlexTests\Tests

我在扩展MXML中的类时遇到了一些问题,我将尝试在这里进行解释,但我也上传了一个


假设我有两个班:

  • game.implementation.base.view.MainView
  • game.implementation.ipad.view.MainView
请注意,它们的软件包名称略有不同(其中一个用于ipad)

想法是
ipad
包的类将扩展
base
包的类


按照上述操作会产生错误:

对MainView的引用不明确。[生成的代码(使用-保留保存): 路径: D:\FlexTests\Tests\bin debug\generated\game\implementation\ipad\view\MainView-generated.as, 行:95,列:62]

我已经检查了生成的代码,有问题的函数是:

_watcherSetupUtil.setup(this,
    function(propertyName:String):* { return target[propertyName]; },
    function(propertyName:String):* { return /** HERE **/ MainView[propertyName]; },
    bindings,
    watchers);

我已经缩小了问题的范围,我认为这是由以下原因造成的:

  • 扩展具有相同名称的类
  • 在MXML中使用绑定扩展类
有没有办法在不执行上述任一操作的情况下解决此问题?


我不希望重命名这些类,显然,删除绑定不是一个选项。

是的,这是编译器中的一个bug,我发现了一个旧bug问题并克隆了它:

这仅在以下情况下发生:

(a) 扩展类与基类具有相同的名称,但位于不同的包中

(b) 扩展类利用了数据绑定


解决方法是重命名其中一个类。

扩展在MXML中使用绑定的类不会引起任何问题。但是,两个同名的类可能会导致各种问题。如果我不得不猜测——这只是猜测——从MXML生成的ActionScript在引用类的某个地方没有完全限定类名;这导致了不明确的引用,因为它无法判断引用的是哪个类。这可能是一个编译器错误;尽管我打赌这个用例的使用率很低。快速修复:将“MainView”的名称改为“MainViewIPad”或类似的名称。在之前的评论之后,我注意到了一些我没有注意到的东西;这是代码段中的“MainView”引用。所以,我确信问题在于这个类名不是完全限定的。也许生成的代码中引用/导入了这两个类?@Reboog711:是的,这是编译器中的一个错误,我发现了一个旧的错误问题并克隆了它:我很高兴你有答案,即使它不是解决方案。:-)