为什么我无法访问公共方法?

时间:2015-05-24 13:03:25

标签: actionscript-3 actionscript

当我使用Main.as时:

appleObject.setX(50);

调用Floater.as中的函数:

public function setX(positionX):void {
    trace("hello");
}
从Floater.as

,但我收到错误1120:访问未定义的属性appleObject。

Main.as:http://pastebin.com/CHMdYM8r

Floater.as:http://pastebin.com/BV4PbfXe

1 个答案:

答案 0 :(得分:0)

详细说明评论中所说的内容:

在AS3类文件中,所有功能代码都需要包装在方法(函数)中。

所以当编译器看到这一行时:

appleObject.setX(50);

期望它是变量声明或函数声明。在函数内移动该行,编译器错误应该消失。正如@DodgerThud在评论中所建议的那样,将它放在构造函数中会有很大的意义:

 public function Main():void {
     score.text = "hello";
     addChild(bananaObject);
     addChild(appleObject);
     appleObject.setX(50);
     //...rest of code

顺便说一句,在类范围内不实例化复杂对象也是一种很好的做法。所以这会更好:

private var appleObject:Floater;

public function Main():void {
     score.text = "hello";
     addChild(bananaObject);

     appleObject = new Floater();
     addChild(appleObject);
     appleObject.setX(50)