![]() |
[РЕШЕНО] Рекурсивно найти на сцене ребенка с заданным ID
У меня что-то совсем мозг поплыл, уже час не могу решить задачу, которая казалась простецкой.
В общем, суть такая, есть в каком-то контейнере ребенок, у которого есть поле ID с определенным значением. Контейнер не известен, а как корневой объект для начала поиска берется stage. Собственно, как рекурсивно обойти всех детей stage и найти этого ребенка, если известен только его ID? Это нужно для получения ссылки на этого ребенка. п.с. Просьба не писать, что можно было положить их всех в массив, чтобы сохранить ссылки и т.п., так как задача совершенно другая. Мне нужно максимально изолировать игровой тутор от основной логики игры, поэтому пепердавать туда какие-либо ссылки я не хочу. |
Код AS3:
|
undefined,
Так работать не будет, точнее будет ошибка компиляций, так-как у дисплей объектов нет поля id. Тут надо использовать метод hasOwnProperty(), который принадлежит Object и не подсвечивается в редакторе FD. caseyryan, Сходи поспи :) |
я идею показать хотел.Для кейси причесать напильником не должно представлять труда :D
|
Цитата:
п.с. Серег, твой способ не работает. Там же переназначение res при каждой итерации. Что-то простая задачка превратилась в какую-то кашу) Видимо действительно лучше на утро оставить |
а ну да, надо его присваивать только если res==null
Код AS3:
проверил - вроде ищет: Код AS3:
|
Все, вопрос решен)
Код AS3:
|
только проверку на существование id поменяй
|
Спасибо) Завтра сравню со своим, посмотрю какой лучше использовать
|
а как это можно менять тему топика?
|
Цитата:
|
о, спасибо давно искал)
|
а почему кстати используешь кастомный класс для контейнеров тутора? как я понимаю это обычные displayObjectContainer, например с кнопками. тогда и связанность меньше.
И не лучше ли хранить весь путь от стейжа, например stage.win1.panel2.btn1, чем пытаться все это кодировать в id кнопки, которая может и не знать где лежит, и как себя отличить от остальных. да и поиск будет быстрее. надо только дать имена контейнерам Код AS3:
|
Цитата:
Цитата:
Я делал много разных туторов для разных игр, и наконец пришел к решению, которое дает игроку одновременно и определенную свободу действий (все кнопки которые прямо не запрещены (кстати для запрета, достаточно внести ее tutorID в массив "шага" туториала), будут нажиматься и он сможет походить туда-сюда, что-то попутно поделать, например обыскать ящики), и в то же время не дает ему сильно отойти в сторону от заданий тутора. Никаких черных экранов с дыркой, в которой кнопка. Тут много опиций. Тутор можно легко превратить в полноценный игровой процесс с подсказками. Для этого и нужно, чтобы был общий интерфейс для разных типов объектов Цитата:
|
Спасибо, надо будет попробовать такую схему, без дырок) но все же как например указать id такого объекта stage.win1.panel2.btn1, тут большоая вложенность, и видно что btn1 может быть тысяча, а нужно из них заблокировать только одну например. И кстати что по свободе действий? по моей статистики проходят раза в 4 хуже, чем когда ведешь до конца. тут же не просто блокирование кнопок, а целые цепочки действий и переходов между ними
|
Цитата:
Цитата:
|
Спасибо)
|
всегда пожалуйста)
|
| Часовой пояс GMT +4, время: 09:16. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.