![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2004
Адрес: Санкт-Петербург
Сообщений: 8
|
Делаю я тут мувик с шариками, массив шариков появляется и крутится, сначала один, потом второй. Спасибо, кстати, МоНаХу за принцип
Есть один вопрос- когда массив шариков только появляется в мувике через attachMovie появляются тормоза для всего остального, происходящего в мувике в данный момент. Понимаю, что быть может всему виной достаточно большое количество элементом или недостаток ресурсов мозга, но может все-таки кто-нибудь глянет код и подскажет советом, как можно избавиться от лагов?Заранее большое спасибо. |
|
|||||
|
Регистрация: Jan 2004
Адрес: На чердаке.
Сообщений: 1,112
|
Гм... Ну ответ в том, что шариков ДЕЙСТВИТЕЛЬНО много, и ты КАЖДОМУ присваиваешь на onEnterFrame свою функцию.
Не знаю, как сделать проще, но есть пара идей. 1. Простая. Написать одну прототипную функцию и назначать ее всем шарикам. MovieClip.prototype.myFunc=function() {...}; for(i=1;i<=дофига;i++) { this["ball"+i].onEnterFrame=myFunc; } 2.Сложная. Попробовать сделать так, чтобы расположение и перемещение шариков обрабатывал один, внешний по отношению к ним клип. Наверное снова через массивы. Что тормоза исчезнут совсем не уверен, но работать точно будет быстрее.
__________________
...Тебе страшно? Мне - нет. |
|
|||||
|
Регистрация: Oct 2004
Адрес: Санкт-Петербург
Сообщений: 8
|
По пункту 2 делал я до этого наверно также как ты советуешь. Был внешний клип, который размножал шарики, делал из них массив и все движение через циклы. Может из-за корявости, может само по себе, но было очень тормознуто. Тогда-то мне и посоветовали сделать так, как сделал сейчас...
А по первому пункту попробую, спасибо за предложение... Кстати, ты вот смотрел клип по моему исходнику. Заметил, что перед появлением обоих массивов шариков в левом верхнем углу на долю секунды появляется один большой шар... Я так полагаю, что это- эталон, правильно? Но почему он там появляется? Я уж ему и писал конструкции, типа ball2._visible=false, но он все равно мелькает.. Что я делаю не так? |
|
|||||
|
Регистрация: Jan 2004
Адрес: На чердаке.
Сообщений: 1,112
|
гм. не заметил. посмотрю еще разок.
Но эталоном это может быть только если ты дупликэйтом пользуешься, при аттаче никаких эталонов в рабочей области не возникает.
__________________
...Тебе страшно? Мне - нет. |
|
|||||
|
Это не эталон... Это - онИнтерФрэйм. Посмотри - у тебя аттачируются мувики, которые на вход в кадр меняют свои свойства, но изначально они - большие. И первую долю секунды не один даже, а куча мувов на одной координате висят со 100% scale-ом. Если бы это был эталон, то и координата у него была та же, что и в первом кадре.
А эталон на самом деле не нужен -) Тормоза, как я понял, ты никогда не убьешь, потому что у тебя шарики создаюся все 24*9 штук разом. Такой цикл сложно переварить. Создавай их заранее, прелоадер сделай какой-нить.
__________________
За двумя зайцами погонишься - от егеря по морде получишь |
|
|||||
|
Регистрация: Jan 2004
Адрес: На чердаке.
Сообщений: 1,112
|
Посмотрел снова. Да, есь такая штука. artfla$her правильно сказал, что при аттаче они у тебя с дефолтными свойствами, и лишь на следующем кадре - все как надо.
Вижу пару способов: 1. Задать все св-ва уже при аттаче. Зае...ёсся 2. Проще. this.attachMovie("ball","ball"+i,i,{_visible:false}); а на следующем кадре for(i=1;i<=дофига;i++) { this["ball"+i]._visible=true; } Цитата:
__________________
...Тебе страшно? Мне - нет. |
|
|||||
|
Я не про загрузку. Прелоадер - только для виду, картинка, не более, можно - анимация. А в это время аттачировать заранее шарики. Когда все саттачируются и определятся - начинать фильм.
__________________
За двумя зайцами погонишься - от егеря по морде получишь |
|
|||||
|
Регистрация: Jan 2004
Адрес: На чердаке.
Сообщений: 1,112
|
Может и поможет... Хотя не думаю, что сильно.
Кстати, как вариант - аттачить не циклом for, а ввести счетчик на onEnterFrame, т.е. за каждый кадр будет прибавляться по одному или по несколько шариков. И смотреться возможно будет эффектнее, и проц плавнее нагружаться начнет, так что резкого скачка не будет. А плавное притормаживание не так заметно.
__________________
...Тебе страшно? Мне - нет. |
|
|||||
|
Tauron
немного оптимизировал... единственное что может помочь, это просто сделать сначало столбец с шариками а потом над ними извращаться. т.е производительность вырастет на количество всех элемнтов / количество рядов. _ _ _ _ |x,x,x,x| |X,X,X,X| _ _ |x,x,x,x| -> - - где Х - | x | - - | x | - -
__________________
file-> new-> F9 -> Ctrl+v/*code*/ ->ctrl+enter Последний раз редактировалось fiot; 18.10.2004 в 20:47. |
|
|||||
|
Регистрация: Oct 2004
Адрес: Санкт-Петербург
Сообщений: 8
|
Всем большое спасибо за помощь!
Код слегка соптимизировал, удалил один ряд шариков, стало лучше. Попозжее продолжу копание в этих шариках, сейчас времени нет, надо дальше двигаться.. С тем, что я принял за эталон тоже разобрался. Еще раз спасибо ![]() |
![]() |
Часовой пояс GMT +4, время: 08:38. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|