Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.01.2016, 17:29
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 1  
Ответить с цитированием
artem2033

Регистрация: Nov 2013
Сообщений: 75
По умолчанию Ошибка компилятора

Вылазит ошибка: Вызов предположительно неопределённого метода init()
Код AS3:
var bullet:MetalBullet = new MetalBullet();
bullet.init();                                   //Вот здесь если поставить скобки, то ошибка исчезает.
(bullet).position.Set(x + 40, y + 30); //Как вот здесь.
Класс MetalBullet наследует BulletBase, в котором(BulletBase) реализован данный метод.
В MetalBullet метод init переопределен. Не могу понять из за чего ошибка.
Помогите разобраться в чём проблема?

Старый 24.01.2016, 17:39
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 2  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,282
попробуй добавить
Код AS3:
trace(bullet.init);
перед
Код AS3:
bullet.init();

Старый 24.01.2016, 18:41
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Если он там действительно есть, то все должно работать. Не видя кода могу предположить, что там либо protected метод, вместо public, либо принадлежащий какому-то кастомному неймспейсу, использование которого не прописано в месте вызова
Цитата:
//Вот здесь если поставить скобки, то ошибка исчезает.
Что это значит? Метод всегда вызывается только со скобками, и никак иначе.

Старый 24.01.2016, 19:46
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 4  
Ответить с цитированием
artem2033

Регистрация: Nov 2013
Сообщений: 75
Код AS3:
var bullet:MetalBullet = new MetalBullet();
(bullet).init();
Если сделать вот так, то ошибка исчезает.

Старый 24.01.2016, 19:48
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 5  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,282
да уж мистика)

Добавлено через 48 секунд
а если переменную переименовать?

Старый 24.01.2016, 19:58
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 6  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
а как пакет называется в котором лежат классы MetalBullet и BulletBase?
Если так работает, то возможно пакет тоже называется bullet, и компилятор просто начинает искать метод в нём

Старый 24.01.2016, 19:59
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 7  
Ответить с цитированием
artem2033

Регистрация: Nov 2013
Сообщений: 75
Поменял название, тоже пропала.

Добавлено через 36 секунд
То есть нельзя называть пакет и переменную одним именем?

Старый 24.01.2016, 20:05
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 8  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Нет конечно. Вообще, это как негласное правило (хотя я бы даже сказал, это чистая логика), в названии пакета нужно использовать множественное число, а в названиях классов или переменных - единственное.
То есть пакет bullets, а переменная bullet (если это конечно не название массива, но тогда нужно постараться чтобы не совпадала с названием пакета)

Старый 24.01.2016, 20:08
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 9  
Ответить с цитированием
artem2033

Регистрация: Nov 2013
Сообщений: 75
Ладно, спасибо за помощь.

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:12.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:12.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.