Просмотр полной версии : инициализация _экземпляра_ класса -- как?
ehlo.
Написал класс для компонента. По наивности думал, что запись
Component = function()
{
this.listeners = Array();
}
создаст по экземпляру listeners в каждом инстансе класса. Выяснилось, что это инициализация класса как такого, и listeners создается один на всех (что удобно для кэшей, но мне не надо). Ладно, обошел динамической инициализацией в методах on-demand, но всё-таки вопрос -- как написать нормальный конструктор? Который будет инициализировать инстанс?
Nox Noctis
30.05.2004, 23:27
Выяснилосьне выяснилось.
this.listeners = Array();для начала неплохо бы знать что такое вообще конструктор :)
this.listeners = new Array();
несколько путанное объяснение - покажи на примере что тебе нужно
Что new Array(), что просто Array() -- по барабану.
И проблема вообще не в этом, а в том, что конструктор Component вызывается один раз. Точнее, что он не вызывается при duplicateMovie: первый экземпляр на сцене его дергает, а копии -- нет. А вот именно копии и хотелось инициализировать.
Для себя я это обошел инициализацией в методе onLoad, который и можно считать полноценным конструктором.
А, чёрт! и onLoad не катит. Он вызывается в непредсказуемое время после duplicateMovie. То есть, получается что-то вроде:
m = duplicateMovie
m.setA();
m.setB();
... и вот тут зовется onLoad()
Так что вопрос остается открытым, но боее точным -- есть ли метод, который зовется непосредственно после duplicateMovie?
Всё, вопрос снят. После duplicateMovie зовется constructor function. Моя бага была в том, что я не дернул явно super() в сабклассе:
Component = function()
{
// init here
}
ThumbnailComponent = function()
{
super(); // was missed
}
Привык, что суперконструкторы компайлер зовет... а в ActionScript -- закат солнца вручную... ну ладно, привыкнем.
Nox Noctis
31.05.2004, 02:26
вот и славно.
я как-то затрудняюсь провесть логическую связь между первоначальным твоим сообщением и последующими... :) но будем надеяться что ты понял что ты имел в виду :))
Дык, трудно первые несколько дней. Сразу по несколько ошибок делаешь. Вот и получается, что толком не знаешь, чего спрашивать-то... ничего. Пробьемся. EJB сложнее.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.