2015-05-24 7 views
0

Когда я использую из Main.as:Почему я не могу использовать общедоступный метод?

appleObject.setX(50); 

вызвать функцию, которая находится в Floater.as:

public function setX(positionX):void { 
    trace("hello"); 
} 

из Floater.as, но я получаю ошибку 1120: Access неопределенного свойства appleObject.

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

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

+2

переместить вызов функции в другое место, а не в определение класса, как у вас в настоящее время. Например, поместите его в конструктор Main(). – DodgerThud

ответ

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) 
Смежные вопросы