Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   [РЕШЕНО] Рекурсивно найти на сцене ребенка с заданным ID (http://www.flasher.ru/forum/showthread.php?t=212855)

caseyryan 16.05.2016 21:39

Цитата:

Сообщение от undefined (Сообщение 1194100)
а как это можно менять тему топика?

Первое сообщение редактируешь - расширенный режим. И там меняется

undefined 16.05.2016 21:40

о, спасибо давно искал)

faraday 19.05.2016 20:02

а почему кстати используешь кастомный класс для контейнеров тутора? как я понимаю это обычные displayObjectContainer, например с кнопками. тогда и связанность меньше.
И не лучше ли хранить весь путь от стейжа, например stage.win1.panel2.btn1, чем пытаться все это кодировать в id кнопки, которая может и не знать где лежит, и как себя отличить от остальных. да и поиск будет быстрее. надо только дать имена контейнерам
Код AS3:

        static public function targetByPath(child:DisplayObjectContainer,path:Array):DisplayObject {
                        var childName:String = path.shift();
                        if (!childName) return child;
                        return findByPath(child.getChildByName(childName),path);
                }
                static public function pathByTarget(target:DisplayObject):Array {
                        var path:Array = [];
                        while (target!=stage) {
                                path.unshift(target.name)
                                target = target.parent;
                        }
                        return path.join('.');
                }


caseyryan 20.05.2016 08:22

Цитата:

а почему кстати используешь кастомный класс для контейнеров тутора?
Это не класс, а интерфейс. Поэтому он и называется ITutor. Дело в том, что это могут быть и не дисплей объекты, но методы set tutorID и get tutorID у них быть обязаны. Эти свойства им адаются сразу в конструкторе. Этот метод ищет ITutor'ы в дисплей листе. Некоторые могут присылаться с данными в команде от модели. Все должно работать так же

Цитата:

И не лучше ли хранить весь путь от стейжа, например stage.win1.panel2.btn1
Конечно нет. У меня Tutorial вообще не сзязан с игрой. Я могу его запросто перетащить в другую игру и только инструкции внутри переписать под нее. А если я сделаю так, то появится ненужная связанность. Да еще и не надежно прописывать такие "хардкодные" пути

Я делал много разных туторов для разных игр, и наконец пришел к решению, которое дает игроку одновременно и определенную свободу действий (все кнопки которые прямо не запрещены (кстати для запрета, достаточно внести ее tutorID в массив "шага" туториала), будут нажиматься и он сможет походить туда-сюда, что-то попутно поделать, например обыскать ящики), и в то же время не дает ему сильно отойти в сторону от заданий тутора. Никаких черных экранов с дыркой, в которой кнопка. Тут много опиций. Тутор можно легко превратить в полноценный игровой процесс с подсказками. Для этого и нужно, чтобы был общий интерфейс для разных типов объектов

Цитата:

да и поиск будет быстрее. надо только дать имена контейнерам
Этот поиск укладывается в тысячные доли секунды. Объектов на сцене всего пара сотен. Явно не самое слабое место в игре. Игрок даже не заметит никаких задержек, так что о скорости поиска я вообще не парюсь

faraday 20.05.2016 13:38

Спасибо, надо будет попробовать такую схему, без дырок) но все же как например указать id такого объекта stage.win1.panel2.btn1, тут большоая вложенность, и видно что btn1 может быть тысяча, а нужно из них заблокировать только одну например. И кстати что по свободе действий? по моей статистики проходят раза в 4 хуже, чем когда ведешь до конца. тут же не просто блокирование кнопок, а целые цепочки действий и переходов между ними

caseyryan 22.05.2016 09:41

Цитата:

надо будет попробовать такую схему, без дырок) но все же как например указать id такого объекта stage.win1.panel2.btn1, тут большоая вложенность
Можно конкретно в месте создания этой кнопки задать ей другой tutorID, например "thatVeryButton", который перепишет то, что задано в конструкторе. И тогда в туторе просто указать в шаге thatVeryButton, который и будет указывать именно на ту кнопку.

Цитата:

И кстати что по свободе действий? по моей статистики проходят раза в 4 хуже, чем когда ведешь до конца. тут же не просто блокирование кнопок, а целые цепочки действий и переходов между ними
Да тут в принципе тоже самое и получается. Разница лишь в том, что игрок может вместо тупого щелканья по подсвеченным кнопкам, что-то еще сделать. Я в тутор добавляют разный интерактив, вроде разговора с NPC, или обыска разных предметов (в меру конечно, чтобы не сильно отвлекался). Можно что-то разгромить. Но в итоге, когда игрок что-то там поделает, ему все равно придется завершить этап тутора. Там, к примеру, есть двери, ведущие в другие комнаты, и пока завершенный этап тутора не пошлет команду открыть эту дверь, игрок туда зайти не сможет. В общем, не полная свобода, но более свободно, чем в классическом варианте. Игру еще не выпустили, но на своих знакомых друзьях и близких я уже этот тутор опробовал. Прошли без проблем даже те, кто вообще не играет в игры. Как будет после запуска, еще предстоит узнать. Но пока я позитивно настроен по поводу этой схемы :)

faraday 22.05.2016 15:25

Спасибо)

caseyryan 23.05.2016 14:28

всегда пожалуйста)


Часовой пояс GMT +4, время: 09:18.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.