Просмотр полной версии : Super.addChild видимо added не происходит
Такой вот пример :
Есть Main класс и есть некоторый класс SubClass extends Main.
Итак,
public function gotoMaterials() {
trace(super.numChildren); // 1
var sh:Shape = new Shape();
sh.graphics.beginFill(0xFFFFFF);
sh.graphics.drawRect(0, 0, 100, 100);
sh.graphics.endFill();
sh.x = 300;
super.addChild(sh);
trace(super.numChildren); // 2
}
Но на сцене не появляется. С чем это связано?
У меня вопрос по оформлению. Очень сложно убрать лишнею табуляцию перед отправкой сообщения?
Наверно потому, что создается sh, а добавляется tf?
Сорри там sh это я тут описался когда добавлял. Так что вопрос открыт
У вас фон случаем не белый?
А где создан SubClass? Ведь не получится создать экземпляр SubClass который extends Main , в Main классе.
Фон случаем не белый.
Там большая стурктура. В Main создается экземпляры класса кнопок, при нажатии на кнопку ( внутри класса кнопки) создается экземпляр того самого SubClass который extends Main и из него уже как я описал выше идет super.addChild
Сорри там sh это я тут описался когда добавлял. Так что вопрос открыт
А табуляцию поправить сложно?
Инилс я вроде поправил, может быть я не понял о чем ты ((
В Main создается экземпляры класса кнопок, при нажатии на кнопку ( внутри класса кнопки) создается экземпляр того самого SubClass который extends Main и из него уже как я описал выше идет super.addChild
И вы конечно решили, что sh добавится в Main, а не в SubClass?
Инилс я вроде поправил, может быть я не понял о чем ты ((
Имелось ввиду поправить отступы в коде
trace(super.numChildren) // 1
var sh:Shape = new Shape()
Ну конечно же я так решил, ведь addChild то делается для Main !!! Да и вообще в трейсах я показал что элемент на Main добавляется, тока его не видно чей то
В трейсах видно, что ребенок добавился к экземпляру SubClass используя реализацию метота addChild суперкласса. К экземпляру класса Main это отношения не имеет.
Так вроде метод super это не ссылка на "родителя" класса, а вызов его методов для класса который его расширяет. Ведь вы можете создать только расширяющий класс, без создания основного (которым он был расширен). И как тогда вы можете добавить addChild в базовый класс, который и не создан в приложении?
То есть, если вы создаёте класс Holder расширяющих класс Sprite и вызываете метод addChild(child) в нём, то child добавляется ведь к Holder, а не к Sprite.
ну я же вызываю не метод addChild, а вызываю метод super.addChild а это разные вещи, не ?
Тоесть по вашему
class Holder extends Sprite
addChild(someClip) === super.addChild(someClip) да ?
Если метод не переопределен (override) в Holder, то да.
cleptoman
09.01.2011, 22:35
super.someMethod - это обращение к методу определенном в родителе, а не к родителю с его методом..короче - не путайте эти штуки.
А табуляцию поправить сложно?
Я поправил =)
Добавлено через 1 минуту
ну я же вызываю не метод addChild, а вызываю метод super.addChild а это разные вещи, не ?
Тоесть по вашему
class Holder extends Sprite
addChild(someClip) === super.addChild(someClip) да ?
А в чем там проблема?
trace( addChild === super.addChild );
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.