Просмотр полной версии : Конструткоры классов (общение друг с другом)
Вот интересно, как кто справляется с такой задачей. Есть мувик, который экстендится классом. И есть другой мув, который экстендится другим классом. Оба на сцене лежат. И вот у одного мува в конструкторе функция, которая что то делает с содержимым второго мувика (например меняет размер вложенного мува). Но дело в том, что когда конструктор выполняется, то все вложенные хлементы мува = undefined. Решить проблему может например onEnterFrame. Который запустит функцию, как только необходимый элемент будет !udenfined. Но имхо способ не самый лучший. Есть что изящнее?
может я неправильно понял.. но разме можно изменять что-то , у чего-то, если его еще нe существует ? а на onEnterFrame ты просто дожидаешся пока оно засуществует.. может стоит тогда "инициализировать" изменения из второго мувика, уже при его ? там флаг в первый передать како-то.. или инициализировать в начале второй а потом первый... :confused:
ну вот я и хотел узнать, как узнать "готовность" мува, помимо onenterframe
Если конструктор того, к чему ты обращаешься, отработал, "по науке" должна быть и проведена инициализация параметров. Поэтому создав один объект (к которому происходит обращение) в коде до вызывающего объекта, все должно быть доступно.
Это раз. Два -- создавать объект прямо в конструкторе вызывающего, но я бы не назвал это хорошим подходом, зависимости усиливаются.
ну вот я и хотел узнать, как узнать "готовность" мува, помимо onenterframe
Одна из рекомендуемых практик гласит -- "если отработал конструктор -- объект готов к работе как минимум с неким стандартным набором свойств".
Если это не так -- значит, архитектура системы сделана криво
Если конструктор того, к чему ты обращаешься, отработал, "по науке" должна быть и проведена инициализация параметров. Поэтому создав один объект (к которому происходит обращение) в коде до вызывающего объекта, все должно быть доступно.
-------
вот и ответ. спасибо.
извиняюсь, конечно, но я не сумел представить ситуацию, когда из конструктора одного класса надо подправлять что-то в конструкторе другого (или я ничего не понял..)
ir73, не интригуй, раскажи, что за фокусы..
Силин, не в конструкторе поправить. А просто обратиться к объекту, к его членам.
вот наконец нашел пример, который мог бы подойти в эту тему. Имеем 2 мувика которые экстендятся разными классами Mov1Class и Mov2Class. Оба эти класса прописаны в линкадже. Оба мувика лежат на сцене. В конструкторе первого мувика присваивается переменная someVar = 1. А во втором мувике эта переменная должна прочитаться myVar = _parent.muv1.someVar; И естественно, мы получаем undefined потому что на момент присвония мувик не инициализировался и для конструктора первого как бы не существует (все верно?). Так как же быть в этом случае и передать переменную?
пример бредовый: зная класс muv1, стало быть и muv1.someVar зачем читать это значение у экземпляра ?
чего добиваемся не понятно..
class Muv1Class extends MovieClip {
public var someVar = 1;
public function Muv1Class () {
}
}
class Muv2Class extends MovieClip {
public function Muv2Class () {
var k = _parent.muv1.someVar ;
}
}
в итоге имеем что k = undefined. Как быть ?
var a=b;
var b=1;
trace(a);//undefined
как быть ?
имхо так
a=1;
b=1;
ps: объясни зачем это надо, может все проще..
ну скажем у менея есть 15 классов. И всем надо передать инит значение одной переменной. Проще задать это значение в одном классе и проичитать его из других 15ти, нежели каждый рз менять его в ручную во всех 15.
а ты не выкладывай все эти мувики сразу на сцену, а аттач их из библиотеки и, соответственно, первым аттач мувик, в котором у тебя переменная.
Проще задать это значение в одном классе и проичитать его из других 15ти, нежели каждый рз менять его в ручную во всех 15.
проще задать это значение в руте или _global
или в классе, от которого твои классы будут наследовать
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.