![]() |
|
||||||||||
|
|||||
|
Modus ponens
|
Доброго времени суток!
Сейчас работаю над довольно большим проектом, многопользовательской онлайновой карточной игрой (что-то вроде лото). По ходу возникли вопросы. Вот я и подумал, что неплохо было бы их всех собрать, т.как наверняка не только мне это нужно. Итак, вопрос №1: Имеется клип сформированный из однотипных элементов который можно описать как "абвгд"; а,б,в,г,д,е...; "абвгд"; а,б,в,г,д,е...; "абвгд"; а,б,в,г,д,е...; "абвгд"; а,б,в,г,д,е...; Где "абвгд" - неменяющийся параметр, а второй параметр во время игры все время изменяется (уменьшается) Вопрос в следующем, какой, с точки зрения быстродействия самый оптимальный способ отображения информации? - аттачить нужное количество клипов? - создать один клип с максимально возможным количеством клипов и если 1 клип не нужно отображать 1. уменьшать _alpha до 0 2. изменять _visible 3. создать клип с двумя кадрами и переключатся между ними (один кадр содержит информацию, другой - пустой) Возможно есть другой вариант? Вопрос №2: Нужно сравнить 2 массива, члены которых тоже являются массивами. Массив1: [[a, b, c, d], [a, b, c, d], [a, b, c, d]]; Массив2: [[a, d, c, f], [d, c, b, e], [e, j, a, c]] В результате проверки не нужно узнавать какой из элементов "подмассива" массива соответствует другому в другом массиве, достаточно просто знать, что в первом и втором "подмассивах" имеются одинаковые члены. Что лучше в таком случае? for(i=0; i<_arr1.length; i++){
for(ii=0; ii<_arr2.length; ii++){
if(_arr1[i]==_arr2[i]){
// что-то сделать
break;
}
}
}
var _str = _arr1.join(",");
for(i=0; i<_arr2.length; i++){
if(_str.indexOf(_arr2[i])>-1){
// что-то сделать
}
}
Слышал о том, что while работает быстрее чем for, есть ли действительно разница? Слышал еще и довольно странное мнение, что цикл вида Будет выполнятся быстрее чем Так ли это? Вопрос №4: Что быстрее перебрать циклом, свойства объекта или члены массива, узлы ХМЛя (мало ли, а вдруг...)? Я конечно же и сам пытаюсь найти ответы, но не все есть возможность потестировать, кроме того, я не уверен, что мои условия для тестов оптимальные. Кроме того, к сожалению, я не программист по образованию, поэтому, возможно какие-то очевидные ответы мне даже не приходят в голову =) Заранее спасибо.
__________________
Hell is the possibility of sanity |
|
|||||
|
№1 - не совсем понял вопроса, но навярняка visible.
№2 - если элементов много, то вызов метода - смерть . В АС3 это особенно заментно. В больших циклах нужно избегать indexOf(); №3 - В АС3 самый быстрый цикл засчёт типизации в АС3 наблюдается афигенное ускорение. В АС2 разницы не замечал. №4 - свойства объекта или элементы массива - разницы в АС2 нет. Лучше проверять свойства экземпляра класса (в ас3 у экземпляров классов будет многократное ускорение). В больших циклах я стараюсь избегать использование методов и .... массивов =) код obj.x+=1 // где obj - экземпляр класса, в котом объевлен член x // с точным типом var x:Number; В АС1/2 разницы нет. З.Ы. - В АС2 все объекты -нетипизированные массивы. Поэтому большого смысла в такой оптимизации нет. Последний раз редактировалось miramax; 17.01.2007 в 02:13. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
. Её не существует. Как и AS2 в принципе.[/off] |
|
|||||
|
loading 50%
|
Начет visible: надо еще stop добавлять, иначе будет кушать ресурс.
|
|
|||||
|
4AM Games
|
Цитата:
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
Modus ponens
|
Спасибо за ответы.
chingachgoog Интересно было бы узнать почему. Дело в том, что проект мне достался "по наследству", и в нем очень много вещей, которые бы я делал именно меняя свойства клипа (перекрашивание, изменение формы и т.п.) сделаны именно переходом на другой кадр. Попробую переформулировать первый вопрос. Похоже, получилось не понятно: Есть много фактически одинаковых клипов состояших из какого-то фона и текстбокса. Их количество в течение игры меняется от макс. 288 до мин. 0, смена происходит раз в 3 секунды. Вот собственно, хочу выяснить как, с найменьшей нагрузкой на процессор можно менять их состояние (заполнен\пустой). С аттачем есть определенные сложности, чтобы их аттачить в нужном порядке приходится запускать еще 1 цикл (который не нужно запускать в случае, если они все уже существуют).
__________________
Hell is the possibility of sanity |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Я имел в виду производительность связанную с появлением/убиранием мувиков со сцены.
Варианты с _alpha и _visible не катят, т.к. мувики продолжают нагружать процессор (например там идет анимация). Вариант с аттачем уже лучше, но более сложен в реализации, чем вариант с пустым кадром. Что оптимальнее - через пустой кадр или аттач - не знаю. PS покадровая анимация практически всегда быстрее чем программная или твиновая. |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:39. |
|
|
« Предыдущая тема | Следующая тема » |
|
|