есть родитель
class A extends MovieClip{}
у него имеются наследники:
class B extends A{
var c:C;
function B(){
super();
c = this["movie"];
trace(c);// ...........movie
trace(c.anyFunction);// undefined
}
}
class C extends A{
function A(){
super();
}
function anyFunction(){};
}
c = this["movie"];
trace(c);// ...........movie
trace( c.anyFunction);// undefined
}
}
Почему в теле класса присутствует конструктор суперкласса, опечатка ?
Почему в теле класса присутствует конструктор суперкласса, опечатка ?
нет, не опечатка - конструктор суперкласса выполняет ряд действий - в частности EventDispatcher.initialize (this);
убрал super() - это я последний месяц на яве сидел - теперь везде их вешаю. Все равно не работает - undefined все методы
--
Я не это имел ввиду. Почему в теле класса C есть функция A, и это не может компиллироваться.Вобщем хорошо бы посмотреть на исходники.
Надеялся сделать следующее. Размещать на Stage клипы, раздавать им имена и вешать на них классы в библиотеке. Причем, конструкторы вызываются, нормально, для всех, но клип бох воспринимает button как простой мувиклип, а вот если я его аттачу, тода он видит его как экземпляр класса Button.
> Это я пытаюсь компонент сотворить - не могу же я передавать его
> запчасти уже активированными по ссылке?! А если внаглую из рута
> обратиться к требуемому мувиклипу (он же экземпляр С внутри В), то
> без проблем - все методы и свойства видны и работают!
Вложенные клипы инициализируются позже родителей.
Т.е. регистрацию нужно отложить до следующего кадра.
private var movie:C;
public function B() {
super();
this.onEnterFrame = this.postponedRegistration;
}
private function postponedRegistration():Void {
delete this.onEnterFrame;
trace(this.movie.anyMethod);
}
Денис Коляко
флеш-технолог
______________________________________________________________________
e...@design.ru | http://www.artlebedev.ru | http://www.etcs.ru
Это действительно не обойти.
Как вариант - в родительском классе использовать onLoad - на момент его
вызова все дочерние клипы уже проинициализируются.
--
leo
Вложенные клипы инициализируются позже родителей.
Т.е. регистрацию нужно отложить до следующего кадра.
private var movie:C;
public function B() {
super();
this.onEnterFrame = this.postponedRegistration;
}
private function postponedRegistration():Void {
delete this.onEnterFrame ;
trace(this.movie.anyMethod);
}
Это действительно не обойти.
Как вариант - в родительском классе использовать onLoad - на момент его
вызова все дочерние клипы уже проинициализируются.