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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.03.2016, 20:18
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 31  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от СлаваRa Посмотреть сообщение
в спеке e4x сказано, что for each...in гарантирует обход индексов массива от 0 до конца(итератор создается на входе в цикл с нулевого индекса с шагом один)
Дим, у тебя реальный пример кода когда for each...in обходит массив или вектор иначе?
Было бы очень любезно с твоей стороны рассказать как связаны e4x и ActionScript 3.0 Array и Vector.<T>.
А реальный пример вроде как был, потому что я на Array всегда пишу for по индексам, а вот кто-то из коллег воспользовался for in в десериализаторе. Бага была настолько плавающая, что победили мы ее только спустя полгода или больше, заменив на итерацию по индексам. Обжёгшись на молоке, на воду дуешь.

Ну, я даже немного осекся от твоей уверенности и полез в доку по for..in и как бы не нашел прямого утверждения о итерации по возрастанию по индексам для массивов и векторов. С другой стороны там упомянут Object, для которого нет определенного порядка (particular order). Не следует ли из этого высказывания, что для других итерабельных объектов такой порядок присутствует?

Добавлено через 14 минут
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
Вот есть у нас меши, есть матрица трансформации каждого из них. И есть матрица родительского дисплейного объекта. В общем случае я не знаю иного решения кроме как умножать матрицу каждого ребенка на матрицу родителя.

Слушайте, мне вот интересно, как Вы решаете подобную проблему?
No offence, просто интересно.
Я нахожу корень поддерева для листьев с одним стейтом и, в терминах старлинга, делаю QuadBatch от рутовой ноды этого поддерева. А окончательную трансформацию рутовой ноды подмешиваю в mvp матрицу. Все, что меняется внутри поддерева, переписываю и аплоажу на видюху. Если меняется трансформация в цепочке от рута и включая его до стейджа, то забиваю и всегда вычисляю при формировании mvp. Там на самом деле не только translation transform, но color transform.

Добавлено через 19 минут
Вся сложность для меня была в том, чтобы развить дерево на такие поддеревья с одним стейтом. Мучался с двойным обходом, но сам обход сильно съедал производительность. Как-то раз пришла в голову шальная мысль, что если нет рута, то ходим и складываем трансформ относительно первой ноды, определяющей стейт и в конце концов мы найдем рут. Но а если есть рут, то относительно него. Получается некая двойная перезагрузка вертех буфера, но это ничто по сравнению с двойным обходом.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 02.03.2016 в 20:34.
Старый 02.03.2016, 21:07
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 32  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Вся сложность для меня была в том, чтобы развить дерево на такие поддеревья с одним стейтом. Мучался с двойным обходом, но сам обход сильно съедал производительность. Как-то раз пришла в голову шальная мысль, что если нет рута, то ходим и складываем трансформ относительно первой ноды, определяющей стейт и в конце концов мы найдем рут. Но а если есть рут, то относительно него. Получается некая двойная перезагрузка вертех буфера, но это ничто по сравнению с двойным обходом.
Где-нибудь можно посмотреть на это в работе?
__________________
Ко мне можно и нужно обращаться на ты)

Старый 02.03.2016, 21:33
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 33  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Двигло даже не в альфе. Могу демку залить, отражающую концепт. В скауте будет видна производительность. Но без сорцов не будет интересно. А сорцы никому не нужны, т.к. даже не в альфе. На самом деле в голове есть пара киллер фич, особенно для мобилок. Вот недавно в голову пришла идея как послойно рендерть item renderers в списках. Они обычно дают нехилую нагрузку в виде множественных drawcalls. Если рендереры похожи между собой и визуально не накладываются друг на друга, то логично их отрисовывать послойно каждый. В свое время, когда работал над мобильным проектом, я пытался изменить способ обхода в списке на by layer. Но оказалось, что построение такого обхода дороже самого рендеринга. Но вот теперь появилась идея как это можно сделать не изменяя стандартного deep-first обхода.

Но все это развивается медленно и печально, на правах хобби.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 02.03.2016, 22:45
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 34  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
Код:
Было бы очень любезно с твоей стороны рассказать как связаны e4x и ActionScript 3.0 Array и Vector.<T>.
for each...in появился в AS3 именно для работы с xml и его работа полностью соответствует спеке e4x, и для Vector и Array он всегда работает четко, в отличии от for...in.

Цитата:
Но все это развивается медленно и печально, на правах хобби.
так может быть на гитхаб запилить?
__________________
местонахождение

Старый 03.03.2016, 06:59
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 35  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
for each...in появился в AS3 именно для работы с xml и его работа полностью соответствует спеке e4x, и для Vector и Array он всегда работает четко, в отличии от for...in.
Слав, в доках этого нет. Так что зря ты это затеял)
Если бы там было написано, что для вектора и массива порядок обхода всегда гарантированно строгий, то не вопрос. А так, сделать что-то, где важен порядок на for each in, а потом искать гейзенбаги, как-то не камильфо.
Цитата:
Но все это развивается медленно и печально, на правах хобби.
Цитата:
так может быть на гитхаб запилить?
Поддерживаю. А почему нет? Кинуть клич, так сказать. Если рендер там получится лучше, чем в старлинге, то, уверен, спросом пользоваться будет
__________________
Ко мне можно и нужно обращаться на ты)

Старый 06.03.2016, 21:39
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 36  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Цитата:
Сообщение от СлаваRa Посмотреть сообщение
Кость, один нюанс, они практически не принимают помощь, и то что из себя представляет старлинг за время его существования это далеко не совершенство, и гордится там особо нечем.
Можно подробнее, в каком смысле не принимают помощь?
__________________
Дети не должны знать о своих родителях

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

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
Цитата:
Слав, в доках этого нет. Так что зря ты это затеял)
есть а спеке e4x
__________________
местонахождение

Старый 07.03.2016, 11:39
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 38  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
есть а спеке e4x
Где конкретно там говорится об as3 массивах и векторах?
__________________
Ко мне можно и нужно обращаться на ты)

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Что-то тут уже теплое с мягким начали сравнивать. При использовании for each будет генерироваться одинаковый код, что для объекта, что для массива. А вот в каком порядке будут обходиться значения, зависит только от объекта (т.е. что hasnext2 (байткод) вернет, так и пойдем). В некоторых случаях и для обычного объекта можно добиться повторяемости обхода значений.
P.S. По поводу того, что for компилируется в while — это не совсем так, в байткоде нет ни того ни другого.

Добавлено через 51 минуту
P.P.S. Кстати, метод forEach массива и вектора, внутри использует for для обхода элементов.
__________________
משיח לא בא
משיח גם לא מטלפן


Последний раз редактировалось alatar; 07.03.2016 в 17:02.
Старый 10.03.2016, 21:47
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 40  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Ну так на чем остановились-то? Пользуем for [each] in для обхода Array и Vector.<T> или от греха подальше?

Я, по-старинке, всегда уточняю размер коллекции в константу или переменную и вперед.
Код AS3:
const len:uint = collection.length;
for (var i:uint = 0; i < len; i++) {
    collection[i];
}
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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