Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   как можно устранить подтормаживание или ускорить выполнение скрипта (http://www.flasher.ru/forum/showthread.php?t=90837)

Llex3D 19.01.2007 03:32

как можно устранить подтормаживание или ускорить выполнение скрипта
 
Доброго времени суток.

Сделал как положено, с применением метода инкапсуляции ( имеется ядро с набором функций и скин, который к ним обращается, когда загружается куда надо).
В общем, проблема в том, что скин меняет цвет, когда юзер водит по цветовой палитре, всё бы ничего, но вот анимацию самой палитры компьютер уже не тянет и наблюдаются тормоза.

При наведении юзером на одну из ячеек цветовой палитры, скниу передаётся комманда установить setTheme(bgCol, fgCol), а вот вся красота в том, что внутри этой функции выполняется вот что:

Код:

RGBtoHSBFgCol = _root.playeCore.RGBtoHSB(fgCol);
RGBtoHSBBgCol = _root.playeCore.RGBtoHSB(bgCol);

mc1Color = new Color (MC1);
mc2Color = new Color (MC2);
mc3Color = new Color (MC3);
..............
.............
mc34Color = new Color (MC34);


mc1Color.setRGB(_root.playeCore.HSBtoRGB(RGBtoHSBFgCol[0]*coef, RGBtoHSBFgCol[1]*coef, RGBtoHSBFgCol[2]*coef));
mc2Color.setRGB(_root.playeCore.HSBtoRGB(RGBtoHSBFgCol[0]*coef, RGBtoHSBFgCol[1]*coef, RGBtoHSBFgCol[2]*coef));
mc3Color.setRGB(_root.playeCore.HSBtoRGB(RGBtoHSBFgCol[0]*coef, RGBtoHSBFgCol[1]*coef, RGBtoHSBFgCol[2]*coef));
..............
.............
mc34Color.setRGB(_root.playeCore.HSBtoRGB(RGBtoHSBBgCol [0]*coef, RGBtoHSBBgCol [1]*coef, RGBtoHSBBgCol [2]*coef));


Функции RGBtoHSB и HSBtoRGB уже описывал вот в этом топике
RBGtoHSB и HSBtoRGB
только в этом топике они в виде прототипа...
с названия playeCore - сразу ясно что это и есть ядро, в ктором содержаться все функции.

Вот в чём вопрос: как-то возможно ускорить это всё, потому что если юзер быстро начинает водить по пресету, тоанимация пресета начинает тормозить, но цвет меняется ещё боле менее.

Может если разбить вычесления для мувиков в 3-4 функции, хотя попробовал, не выходит, что-бы одновременно выполнялось несколько функций...

etc 19.01.2007 03:38

Слишком много вычислений. Почему нельзя загнать результат вычислений в одну переменную и отвещать всем сразу?

И потом, писать полсотни одинаковых строк смахивает на садо-мазо.

Nirth 19.01.2007 03:41

спасибо автору, он продлил мою жизнь

Nirth 19.01.2007 03:45

отсмеялся.

ты не называй это пожалуйста инкапсуляцией, у меня приступы начнутся.

ты про циклы знаешь? for там и тд

Kikasso 19.01.2007 09:18

метод "упрощевания" через "циклизацию":

Код:

var bgArr:Array = new Array();
var num:Nubmer = сколько-всего-их

//инициация
for(var i:Number = 0; i< num ; i++){
bgArr[i] = new Color( this["MC" + (i+1)] );
}
//в функции
var arr:Array = RGBtoHSB(bgCol);
var newBG = HSBtoRGB (arr[0]*coef, arr[1]*coef, arr[2]*coef);
for( i = 0; i< num ; i++){
bgArr[i].setRGB(newBG);
}

Примерно так, не проверял и не собираюсь. От своей инкапсуляции откажитесь - это тормозит процесс.
50 одинаковых строк это сильно. Я видел до этого только 15 в серьезном проекте, отпаивали валерианкой.

etc 19.01.2007 11:12

А здесь вообще нет никакой инкапсуляции.

Kikasso 19.01.2007 12:45

Цитата:

Сообщение от __etc
А здесь вообще нет никакой инкапсуляции.

Я кавычки не поставил. Метод можно назвать "закинь код на антрессоли и доставай его оттуда"

Llex3D 19.01.2007 13:24

мдя.....
Каждый объек получает получает разные цвета и coef для всех разный, цикли не прокатят.
Насколько помню, инкапсуляция - это когда ни инкапсулированый объект ни ядро не имею ни малейшего понятия о схеме реализации кода как в ядре, так и в инкапсулированом объекте.

Ув. Nirth Вы заметили хоть одно обращение на прямую к какой-то переменной из ядра? И вообще, лучше отложить все эти насмешки, а то уже был один топик, только со мной спорили __etc и iNilis. Я книги читал и хорошо помню что такое инкапсуляция. Я вам привел утрированный код, дабы отразить суть вопроса.

Kikasso 19.01.2007 13:54

Цитата:

Сообщение от Llex3D
Я вам привел утрированный код, дабы отразить суть вопроса.

Шутка удалась, поздравляю.
Надо сокращать количество операций, причем серьезно.
вот это:
Код:

_root.playeCore.HSBtoRGB(...)
работает заметно медленнее чем это:
Код:

HSBtoRGB(...)

etc 19.01.2007 14:14

Цитата:

Сообщение от Llex3D
получает разные цвета и coef для всех разный

А почему его нельзя вычислить в цикле? Даже если коеффициент кастомный, то он должен быть свойством обрабатываемого клипа.


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

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