Показать сообщение отдельно
Старый 11.02.2009, 13:00
camelot вне форума Посмотреть профиль Отправить личное сообщение для camelot Найти все сообщения от camelot
  № 5  
Ответить с цитированием
camelot

Регистрация: Jul 2006
Сообщений: 26
Цитата:
Сообщение от chingachgoog Посмотреть сообщение
А почему экземпляр класса SimpleClass должен показывать, что он экземпляр своего предка (ClassAsParent)? Он и не будет это показывать, пока вы ему насильно не пропишите prototype.__proto__ = ...
А так правильно:
Код:
trace(this instanceof SimpleClass);
a extends в классе зачем, если каждому классу надо будет прописывать родителя руками в рантайме? я уже задумываюсь сделать и запускать вначале проигрывания swf. но это же не выход
Код AS1/AS2:
class Bubn
{
  public static function bindClasses()
  {
    other.package.SimpleClass.prototype.__proto__ = parent.ClassAsParent.prototype
  }
}
Цитата:
Сообщение от __etc Посмотреть сообщение
Это недостаток instanceof, в силу кривой реализации классов в AS1/AS2.
я прошу прощения, я не до конца обьяснил суть проблемы. Тут дело не в том что instanceof работает неправильно, а
дело в том что раньше SimpleClass работал и наследовался от ClassAsParent нормально. Тоесть методы ClassAsParent работали в SimpleClass, но в какой-то момент SimpleClass перестал наследоваться.
Если вы грешите на instanceof. то такой код
Код AS1/AS2:
  public function SimpleClass()
  {
    trace(this instanceof ClassAsParent);
    trace(this.__proto__ == ClassAsParent);
  }
выдаёт два раза False.
я уже вторые сутки пытаюсь понять что именно привело к такому результату и как это исправить. неужели никто не сталкивался с такой проблемой?

з.ы. компилирую в flash cs4. попробовал mtasc (версии 1.14) - результат такой же.

Добавлено через 6 минут
Цитата:
Сообщение от dimarik Посмотреть сообщение
А на каком этапе наследования инстансоф становится якобы не ребенком суперкласса?
компилируется без ошибок. при запуске swf у класса не работают методы парента