Просмотр полной версии : Почему при указании на функцию из мувика во внешнюю среду, ролик тормозит?
EndoCrinologist
29.05.2011, 12:14
Вот код мувике:
onClipEvent (load) {
MadBallSled = 1;
}
onClipEvent (enterFrame) {
if (MadBallSled == 1){
_root.MainSled();
}
}
А вот код во внещнем ЭТОМ ЖЕ кадре:
function MainSled():Void{
function Sled():Void{
//----------КРАСИВЫЙ СЛЕД
_root.n++;
NewName = "doth" + _root.n;
var CL = doth.duplicateMovieClip( NewName, getNextHighestDepth() );
CL._x = _root.MadBall._x;
CL._y = _root.MadBall._y;
}
var time=setInterval(Sled,1);
}
При запуске, роли ОООООЧЕНЬ сильно тормозит. Подскажите, как улучшить? что убрать? опимизировать?
Для начала:
1. Убрать код с мувика, записать в кадре.
2. Не объявлять одну функцию, внутри другой, выносите её.
А потом уже можно и дальше смотреть, что у вас не так. А не так у вас то, что с частотой EnterFrame у вас плодится огромное количество интервалов.
EndoCrinologist
29.05.2011, 12:34
Хм... дело в том, что я уже пробовал убирать из мувика. Он не работает. Просто я им управляю с клавиатуры, а при движении остается след. Это всё я сделал, чтобы как бы пользователю сначала был недоступен красивый след от объекта, а при покупке след возобновился......
О!!! Я ПРИДУМАЛ!! просто сделаю инвизибл на этот след! ^_^ Спасибо огромное! ^_^
Добавлено через 2 минуты
Хм... что-то не вышло с инвизом..
Хм... дело в том, что я уже пробовал убирать из мувика. Он не работает.
Решайте.
MadBallSled = 1;
this.onEnterFrame = function()
{
...
};
Потом п.2.
Потом надо решать, что с интервальными функциями Sled делать, тормоза от этого.
Сейчас они у вас плодятся с частотой fps. Каждую секунду несколько раз (с частотой fps) у вас стартует выполнение отдельного экземпляра функции Sled с частотой тысячу раз в секунду.
То есть, если частота проекта выставлена как 30 fps, то уже в течении первой секунды вы пытаетесь заставить флеш-плеер выполнить функцию Sled примерно 30 x 1000 = 30 000 раз. В течении второй - уже в два раза больше. И т. д.
Всё надо переделывать.
PS
1. Отучайтесь писать код на объектах, вообще смотреть на него нет желания ни у кого.
Не работает - разбирайтесь, что именно, трейсить учитесь.
2. Не давайте имена функциям с прописных букв - это зарезервировано для названий классов.
3. Не давайте своим переменным зарезервированные имена, типа time.
EndoCrinologist
29.05.2011, 13:48
MadBall.onEnterFrame = function()
{....
}
Вы так имели в виду?
Если да, то получилось очень жестоко... Все элементы задвигались на кадре...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.