2011-03-03 48 views
2

在Flash CS5中,我得到
1195:试图访问不可访问的方法testFunc通过引用与静态类型文档。
编译时无法理解的情况,我已经彻底搞清楚了。AS3无法访问的方法 - 一切都明确公开

MyDoc.as - 我的文档类。

package { 
    import flash.display.MovieClip; 

    public class MyDoc extends MovieClip { 
     public function MyDoc() {} 

     public function myOtherFunc() : void {} 

     public function myFunc() : void {} 
    } 
} 

MyClass.as - 链接到没有代码仅包含TLF文本框的一帧影片剪辑。

package { 
    import flash.display.MovieClip; 

    public class MyClass extends MovieClip { 
     public function MyClass(myDoc : MyDoc) { 
      myDoc.myFunc(); 
     } 
    } 
} 

这就是我的FLA的范围 - 一个影片剪辑。空的阶段,单帧没有代码就可以了。

让我感到困惑的是,如果我将看起来不相关的TLF文本框从等式中移出,或者将其更改为经典文本框,删除它,或者取消其包含的MC的链接,我可以获得无错误编译来自MyClass。
我也可以通过删除myOtherFunc()的定义或将它移动到myFunc()的下面来解决错误,我必须做几次才能说服自己这是真的。

关于发生了什么的任何想法?

更新:我刚刚在朋友的CS5版本上确认了相同的行为。他使用Mac而不是我的Windows安装程序,他只安装了CS5版本,而我同时使用CS5和CS4。这真的好像它可能是一个Flash漏洞...

+0

首先构造不该没有返回类型。尝试重命名您的文档类。可能由于名称冲突而被TLF覆盖? – Roy 2011-03-03 10:48:57

+0

出于某种原因,我一直认为声明返回类型:void等于省略了返回类型,但这并不是真的有意义。有趣的是,这个建议修正了这个例子,但不是它从中派生出来的代码,所以我删除了构造函数的返回类型声明并重新编译并编辑了我的问题。我也改名为Doc,但这并没有办法。 – dbplunkett 2011-03-04 01:51:24

回答

3

您可能需要在您的源路径的textLayout.swc http://labs.adobe.com/downloads/textlayout.html

注:成功的答案是评论

+1

在听取了Roy的建议并重新将代码重新烧录之后,它确实看起来与TLF领域有关。我从来没有碰过SWC源码路径,所以我认为它是默认值。假设$(AppConfig)指向我的研究表明应该在的位置,C:\ Program Files \ Adob​​e \ Adob​​e Flash CS5 \ Common \ Configuration,该目录似乎指向现有的SWC文件。我无法弄清楚如何验证这一点 - 我担心这可能会让我感到困惑,因为我安装了CS4和CS5。另外,这里是我的AS3设置: http://cl.ly/1V3z2a3r2K1o2O1L2W1S – dbplunkett 2011-03-04 02:04:06

+3

TLF似乎存在很多问题。我还没有任何直接的经验,但一个不断提出的建议是通过将“默认链接”更改为“合并到代码”来将swc合并到swf中http://help.adobe.com/zh_CN /flash/cs/using/WSb03e830bd6f770ee-4b0db644124bbdb363d-8000.html#WSb03e830bd6f770ee72b69dc71257a25aa72-8000 ...我不确定这是否与您的问题有关,甚至是理想的解决方案,但可能值得一试。 – 2011-03-04 09:33:39

+1

完全做到了!非常感谢!多么痛苦的TLF是... – dbplunkett 2011-03-04 13:04:34