Задать вопрос

Как :void может вызывать ошибку? [AS3]

Невиданная ситуация: ошибка возникает и пропадает, если добавить :void после определения метода. Причем влияет это на следующий задекларированный метод в этом же классе.

Ошибка:
1195: Attempted access of inaccessible method lightTwoOk through a reference with static type com.myApplication:myDoc.

Определения:
public function lightOneOk():void {
    myMC.LightOne.goGreen();
}

public function lightTwoOk() {
    myMC.LightTwo.goGreen();
}


Т.е. если убрать первый void, ошибка пропадёт. Добавить второй — и в список ошибок включатся методы, определённые ниже, после этих двух.

Методы не возвращают значений, функция внутри — обёртка для gotoAndStop().

Структура классов такова. Приведённый код — из класса документа (myDoc). Из его конструктора я впервые обращаюсь к Singleton приложения (класс myApp), создавая его. myApp содержит свойства Doc и User. User, по получении данных удалённого веб сервиса, вызывает «проблемные» методы:

var App:myApp = myApp.getApp(); // получить ссылку на синглтон приложения
App.Doc.lightOneOk();
App.Doc.lightTwoOk(); // вот на это место указывает ошибка 1195

Это просто UI: подключился — включил зелёный огонёк.

ЧЯДНТ? Гуру ООП, объясните, что «на самом деле» принципиально меняется, когда добаляется :void к определению метода?
  • Вопрос задан
  • 2958 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
DaFive
@DaFive
void, идейно, ставится по-умолчанию. А ругается у вас не на тип возвращаемого значения, а на то, что функции такой нет при обращении. Проверьте написание функции, переименуйте в конце концов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы