Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.01.2012, 23:16
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 11  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
Но, возвращать будет всегда последний добавленный в список отображения объект с именем name,
Код AS3:
private function searchByName(name:String):DisplayObject
{
    for(var i:String in objectMap) if ( i == name ) return objectMap[i];
    return null
}
__________________
Марк Tween

Старый 29.01.2012, 23:29
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 12  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
in4core, такой цикл вернет ровно тоже самое, что и objectsMap[name]
имелось ввиду, что что если объектов с одинаковым именем будет не один, то хранится будет последний добавленный

Старый 29.01.2012, 23:31
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 13  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
аа точно, затупил, сорри.
__________________
Марк Tween

Старый 29.01.2012, 23:49
Stitch512 вне форума Посмотреть профиль Отправить личное сообщение для Stitch512 Найти все сообщения от Stitch512
  № 14  
Ответить с цитированием
Stitch512

Регистрация: Nov 2010
Сообщений: 150
Цитата:
return null;//ЗДЕСЬ return result; ???
Цитата:
//ЗДЕСЬ вместо i - idx или просто наращивать i ниже?
Да, все правильно, должно быть
Код AS3:
return result;
а вместо i - idx. Писал скорее как превдокод, поэтому работоспособность не проверял, сори)
Цитата:
currContainer = stackContainers.pop();//Что здесь происходит?
idx = stackIdx.pop();//Что здесь происходит?
Проходимся по списку отображения, когда нашли контейнер, то текущий контейнер и текущий индекс заносим в стек и начинаем проход по найденному контейнеру. Когда закончили проход, то из стека восстановили предыдущую итерацию - собственно контейнер и индекс с которого продолжать обход, собственно это и здесь и делается.

Только наверное еще нужно после
Код AS3:
idx = stackIdx.pop();
делать
Код AS3:
idx++
иначе повторится итерация того же элемента и будет бесконечный цикл.

И
Код AS3:
var result:DisplayObject = currContainer.getChildByName(name);
стоит делать только при idx==0 - ну то есть только при первой итерации.

Добавлено через 2 минуты
Вообщем суть этого алгоритма - замена рекурсии циклом, на сколько это оправданно в данном случае это уже другой вопрос, но в принципе возможно.

Старый 30.01.2012, 00:06
Vitalya вне форума Посмотреть профиль Отправить личное сообщение для Vitalya Найти все сообщения от Vitalya
  № 15  
Ответить с цитированием
Vitalya

Регистрация: Jan 2012
Сообщений: 26
Ув. alatar!
То есть, мы будем формировать в процессе создания сцены ассоциативный массив, и потом удобно вытягивать из него объекты.
Но это метот будет полезен в случаи включения этих событий в программу в самом начале создания сцены.
А как создать функцию которой можно будет заполнить objectsMap, считав информацию у уже существующей сцены? А именно с DisplayObjectContainer, в смысле, что у меня есть готовая сцена и мне нужно из нее вынуть именно нужный мне ОБЪЕКТ.
Заранее спасибо за ответ.
P.S Очень крутой подход c Object-ом.

Добавлено через 13 минут
Ув. Stitch512.
Все, понял как оно там все работает))

А насчет тих вопросов
Код AS3:
currContainer = stackContainers.pop();//Что здесь происходит?
idx = stackIdx.pop();//Что здесь происходит?
Это, сначала мы присваиваем последний элемент вектора currContainer-у и idx-у, а потом удаляем его же из вектора ОДНИМ ОПЕРАТОРОМ. Получается Конкатенация функций(незнал) - РЕСПЕКТ))


Последний раз редактировалось Vitalya; 30.01.2012 в 00:11.
Старый 30.01.2012, 00:23
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 16  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Сама архитектура в которой приходится искать объект по имени, а не получать его по ссылке попахивает. А если совсем прямо, сильно пахнет.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 30.01.2012, 00:33
Vitalya вне форума Посмотреть профиль Отправить личное сообщение для Vitalya Найти все сообщения от Vitalya
  № 17  
Ответить с цитированием
Vitalya

Регистрация: Jan 2012
Сообщений: 26
Я так понимаю, что в моей конторе, программисты используют эту функцию для упрощения работы.
Спасибо большое за ОГРОМНУЮ помощь!
P.S. Если будут варианты насчет способа сканирования сцены в objectsMap, буду рад.)

Старый 30.01.2012, 00:58
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 18  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
И что, упрощает?
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 30.01.2012, 01:15
Vitalya вне форума Посмотреть профиль Отправить личное сообщение для Vitalya Найти все сообщения от Vitalya
  № 19  
Ответить с цитированием
Vitalya

Регистрация: Jan 2012
Сообщений: 26
Думаю, помогает автоматизировать доступ к каким то объектам, считывать имена из какой то структуры и что-то с ними делать.
Честно, точно не знаю - это только мои предположения)

Старый 30.01.2012, 01:29
elder_Nosferatu вне форума Посмотреть профиль Отправить личное сообщение для elder_Nosferatu Найти все сообщения от elder_Nosferatu
  № 20  
Ответить с цитированием
elder_Nosferatu
 
Аватар для elder_Nosferatu

Регистрация: Nov 2010
Адрес: 48° 55'N 24° 42'E GMT +2:00
Сообщений: 399
Записей в блоге: 1
Вся идея с ассоциативным масивом как раз и состоит в том, чтобы не обходить весь дисплей лист. А функция заполнения этого масива как раз и будет базироваться либо на рекурсивном обходе, либо еще на чем нибуть похожем.

Короче, либо нормальная рекурсия, либо со старта заполняете ассоциативный масив!

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:05.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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