Форум 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=137223)

sogologo 08.03.2010 14:35

Оптимизация кода
 
Всем привет ещё раз.

Подскажите пожалуйста, как оптимизировать данный код?? А то я так и не научился грамотно пользоваться array, и вроде всё создаю и ни чего :(( не идёт

Вот такая ситуация у меня, у меня 130 одинаковым по структуре объектов и на них одинаковый функционал, от 1 до 130 счет.

вот такой код допустим. как его оптимизировать??? направте ПЖЛ меня! у вас всегда это получалось!

если прошу много, как вы считаете :)) то в долгу не останусь, дам на пива с плюшками :) :drinks:

Код AS1/AS2:

//DOM_122
dom_122.onRelease = function() {
        des_122._alpha=0;
        des_123._alpha=0;
        des_124._alpha=0;
 
        des_122._alpha=100;
 
        des_122.close_but.onRelease = function() {
                des_122._alpha=0;
                }
}
 
dom_122.onRollOver = function() {
        dom_122.but._alpha=50;
}
dom_122.onRollOut = function() {
        dom_122.but._alpha=0;
}
 
 
//DOM_123
dom_123.onRelease = function() {
        des_122._alpha=0;
        des_123._alpha=0;
        des_124._alpha=0;
 
        des_123._alpha=100;
 
        des_123.close_but.onRelease = function() {
                des_123._alpha=0;
                }
}
 
dom_123.onRollOver = function() {
        dom_123.but._alpha=50;
}
dom_123.onRollOut = function() {
        dom_123.but._alpha=0;
}
 
 
//DOM_124
dom_124.onRelease = function() {
        des_122._alpha=0;
        des_123._alpha=0;
        des_124._alpha=0;
 
        des_124._alpha=100;
 
        des_124.close_but.onRelease = function() {
                des_124._alpha=0;
                }
}
 
dom_124.onRollOver = function() {
        dom_124.but._alpha=50;
}
dom_124.onRollOut = function() {
        dom_124.but._alpha=0;
}


in4core 08.03.2010 14:48

Код AS1/AS2:

var arr = [1,2,3,......130];
for(var i=0; i<arr.length; i++) {
  arr[i].onRelease = function() {}
}

Первый метод убогий)
____________________
Второй метод не муторный.
Код AS1/AS2:

var i=1;
var arr=[];
while(i<130) {
      arr.push("dom"+i)
      ++i;
}
for(var i=0; i<arr.length; i++) {
  arr[i].onRelease = function() {}
}


sogologo 08.03.2010 14:50

и прям работает??? нука посмотри

in4core 08.03.2010 14:50

В твоем случае если ты совсем новечок добавлю, что у тебя должно быть как то так
Код AS1/AS2:

arr.push(_level0["dom"+i]);

Могу конечно ошибаться. Если не катит, тоесть кнопки не работают проверь
Код AS1/AS2:

trace(typeof arr[0]);

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

sogologo 08.03.2010 14:55

хм :) разбежался я короче! :)) я думал это законченный скрипт

на сколько я понимаю это то направление :))

слушайте, ну я понял что тут подставляется кнопка имя кнопки dom от 1 до 130.

как этот я вопрос у себя решил, когда решил оптимизировать это всё дело.


а что вставлять в
Код AS1/AS2:

arr[i].onRelease = function() {}

???
Как видите у меня там тоже не всё просто :( в этом и есть суть проблемы, как элемент des_ обнулить а потом определенному выставить опять значение 100?

плюс там ещё есть

Код AS1/AS2:

des_123.close_but.onRelease = function() {
                des_123._alpha=0;
                }


in4core 08.03.2010 15:02

Это порнография! Что забред делать Release в Release ? Нде это видано где это слыхано)))).

Предлогаю : Вопервых. Создать еще один цикл но уже для вторых релисов, и при нажатии на первый релис делать проверку типа булен.

как то так :
Код AS1/AS2:

var bb=false;
 
dom_123.onRelease = function() {
    catch(TWO_123,true);
}
function catch(mc,bul) {
        if(bul) { mc.onRelease = f; }
}
function f() { type u release}


sogologo 08.03.2010 15:04

ну тут не решается проблема :) ЦИФР :) то есть в этом и суть чтобы избавится от нумерации всех мувиков :)

ну а что вы хотели, я в циклах не бум бум вообще

in4core 08.03.2010 15:04

И еще
Код AS1/AS2:

dom_124.onRelease = function() {
        des_122._alpha=0;
        des_123._alpha=0;
        des_124._alpha=0; // ЭТО че за охренеть не встать?
 
        des_124._alpha=100; // когда есть ЭТО!!!

Добавлено через 1 минуту
Товарищ если вы не бум бум. то надо учится, читать книги. мы тоже раньше ничего не знали. Мы же не можем все написать за вас? Можем конечно но за деньги )))))))) Но вам то самому не стыдно будет?

sogologo 08.03.2010 15:10

так я вот и учусь :) так сказать на примере старших :))))

два раза потому что как раз и задумался об использовании цикла

in4core 08.03.2010 15:17

Вы не понимаете что такое циклы? Давай те я вам объясню на примерах. чтобы знали в след раз !

Цикл for рассматривает значения от одного предела до другого. Представтьте что есть линия от А до пункта Б. между пунктами есть множество подпунктов типа А1.А2 и т.д. Но основные для нас это А и Б. В отличие от остальных методов циклы пролетают незаметно с огромной скростью в доли милесекунд.

пример :
Код AS1/AS2:

 for(var A=-20(первое значение), A<200(предел), A++(обозначаем то что к начальному значению будет прибавлятся каждый раз единица пока не дойдет до предела)) { ваши действия}

Цикл while, если перевести в простонародие ПОКА. Тоесть ПОКА некоторое значение (<,>, ! и т.д.) какого то другого значения, то ВЫПОЛННЯЕМ условия.

пример
Код AS1/AS2:

var d=0;
while(d<20) { действие; d++ }



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

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