AS3类在第一行报override错误解决方法

Posted on November 29, 2014

感慨一下,好久好久都没写过博客了。工作实在忙的没人性。。[流泪]

今天遇到一个问题,网上找了好久没搜索到答案。后来解决了,来这里记录一下。剧情经过是这样的:我们之前的多个项目,一直在用FB4.7开发,纯ActionScript+AIR项目,FB4.7自然默认给你用新的编译器。可是这个新的编译器非常坑。自己都有无数个bug。估计是刚刚开发出来还没来得及测试Flash团队就被Adobe裁掉了。关于新编译器的bug,举几个栗子:

1.switch()里如果是数字,会跳转错误。 2.所有类型声明为接口的变量,都不检查属性是否存在。 3.Embed标签里多了一个)号都不提示。 4.父类里有个public的变量,子类里有同名的private变量,不提示冲突。 。。。。

我已经无力吐槽了,这是临时工写的编译器吧?当切换到旧编译器的时候,满屏幕的bug暴露出来了,一个个修复修了好久。想一下之前的项目里都带着这些bug上线的,心里就咯噔一下。所以决心替换为旧版的编译器。替换方法很简单。就是把项目里的.actionScriptPropperties那个文件打开,找到useFlashSDK那个属性,改为false重启FB即可。

不过改为旧版编译器后,反而出现了无法解决的bug:

1020: 标记为 override 的方法必须覆盖另一方法。 Application.as /EgretLib/src/egret/ui/components 第 1 行 Flex 问题

在第一行报错,第一行根本没代码。网上搜索了好久,都没找到一点线索。后来仔细想了下。有可能是文档结构里有问题,报错无法定位到行,只能显示为第一行。用万能办法来排除:一段一段删除。最后发现居然是元数据标签的问题。有个变量上使用了[SkinPart]标签,把这行删掉报错就解决了。这也解释的通了。这是Flex的元标签。新编译器里已经不支持了。所以直接被忽略了。但是旧编译器其实是个Flex编译器。用在纯AS项目上,可能不允许你使用Flex的元标签。

胡乱写了一通,留下这篇博客,希望遇到类似问题的童鞋能搜索到。