Как из дочернего класса правильно обратиться к родительскому
имхо вопрос.
Вот код родительского класса: Код AS3:
Код AS3:
Нашел мало информации по данному вопросу, может кто подскажет правильный метод. :moder: |
Нельзя во флэше обращаться к родительским объектам, он этого не умеет и никогда уметь не будет. Когда-то, несколько лет назад, макромедия хотела это сделать, но из-за кучи багов и нерентабельности вопрос закрыли. Сами посудите, какое тут слабое связывание, когда объекты дёргают своих родителей за методы, которых у них может и не быть. В общем не будет такого никогда.
Посылайте наверх событие. |
RaVeN-Nikma, если Вы называете класс дочерним/родительским, то подразумеваете наличие наследования, которого в коде у Вас нет. Более того, почему названия обоих классов одинаковые? Для случая наследования код будет корректен после добавления наследования.
Если Вам необходимо знать имя функции, вызвавшей другую функцию, то так нельзя, и нужно учитывать это в архитектуре |
Ну во-первых не совсем понятно чего Вы добиваетесь.
Я представляю 2 варианта: 1. На сцене есть некоторый объект (родитель), в родителе содержится дочерний. Родитель - класс MapObject. Дочерний назовем ChildClass. В таком случае, прежде, чем что-либо вызывать из родительского класса дочерним, надо дочерний добавить в список отображения. Поясняю кодом. Родительский: Код AS3:
Код AS3:
Код AS3:
Если можно, уточните более подробно, чего Вы добиваетесь. |
GAIKER, абсурда какого-то Вы тут на наговорили :)
|
BlooDHounD, это был тонкий юмор :)
http://bash.org.ru/quote/395556 |
Одинаковые названия классов, это с копированием кода ошибся, извиняюсь.
Разобрался с наследованием, но функцию все равно вызывает неверно. Родитель Код AS3:
Код AS3:
|
2all - простите меня серого, но разве так можно:
public class MapObject extends Sprite { private function MapObject(){ } ????? |
Если можете, вышлите наиболее подробный код. А то анализировать код с ошибками сложно. Например, у Вас CreateObject() присутствует как в родительском, так и в дочернем классе. При том в дочернем функция должна быть override, а у Вас нет - это вызвало ошибку при тестировании кода.
|
Вот полный код:
http://www.bestbrok.com/AC3.rar Если функцию countObj() запускает родитель, то trace выдает 5 (это верно). Если функцию запускает дочка, то trace кидает 0. Все есть в архиве |
Часовой пояс GMT +4, время: 16:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.