Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   тормозит сайт (http://www.flasher.ru/forum/showthread.php?t=144102)

Макс1977 02.09.2010 21:29

тормозит сайт
 
Здравствуйте Господа флешеры!
Прошу сильно ногами не бить, иль хотябы, не по лицу!))
Лучше подскажите в чем виноват))

Тут находится то - с чего я начал изучать мир Флеша!
http://file.qip.ru/file/Gr7VygiK/Site.html

Сайт моему другу (работает только второе подменю) остальное пока не написано!

Столкнулся с проблемой - после многократного нажатия клавиш сайт начинает потихоньку тормозить и дальше больше!

Я явно что то упустил.

Вот функция нажатия кнопки и вызова внешнего SWF

Код AS3:

function SMenuClick3(event:MouseEvent):void {
      if (MemuSC != 3){  //условие чтобы второй раз кнопка не нажималась
              MemuSC = 3;
              MenuBeep.play();
              RtSub1_1.alpha = RtSub1_2.alpha = RtSub1_4.alpha = RtSub1_5.alpha = RtSub1_6.alpha = RtSub1_7.alpha = RtSub1_8.alpha = RtSub1_9.alpha = 0;
              RtSub1_3.alpha = 1; // объекты которые акцентируют внимание на кнопке (типа такие соты крутящиеся)
 
              // тут начинается подгрузка файла
              var req1:URLRequest = new URLRequest("s03.swf");
              var loader1:Loader = new Loader();
 
              addChild (loader0); //поставить анимацию лоадинга
              addChild (loader1);
              loader0.alpha = 0;
              loader1.alpha = 0;
              loader1.x = 224.9;
              loader1.y = 146,9;
 
              loader1.addEventListener(Event.ENTER_FRAME, sl01);       
              loader1.contentLoaderInfo.addEventListener(Event.COMPLETE, fileLoaded1);
              loader1.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, preLoad1);
              loader1.load(req1);
 
              function sl01(EVENT:Event):void{
                            if (loader0.alpha == 0){
                            loader0.alpha += 0.1;
 
                                          if (loader0.alpha >= 1){
                                                        loader1.removeEventListener (Event.ENTER_FRAME, sl01);
                }}}
 
              function fileLoaded1 (event:Event):void {
                            loader1.removeEventListener (Event.ENTER_FRAME, sl01);
                            loader1.alpha = 0;
                            loader0.alpha = 1;
                            loader1.addEventListener(Event.ENTER_FRAME, bebe1);
              }
 
              function bebe1 (EVENT:Event):void{
                            trace (tq);
                            loader1.alpha += .2;
                            loader0.alpha -= .2;
 
                            if (loader1.alpha >= 1)
                            {
                                          loader0.alpha = 0;
                                          loader1.removeEventListener (Event.ENTER_FRAME, bebe1)
                                          loader1.removeEventListener (Event.ENTER_FRAME, sl01);
              }}
 
              function preLoad1 (event:ProgressEvent):void {
}}}

спасибо за внимание))

alatar 03.09.2010 14:04

Оформите код соответствующими тегами, а не как цитату. Поставьте отступы. Вряд ли кто-то захочет это хотя бы просмотреть, пока оно в таком виде.

incvizitor 03.09.2010 14:47

И отступы не мешало бы расставить в коде.

Макс1977 03.09.2010 19:20

Вроде все исправил. Особо не ругайте. В программировании, в целом, это мои первые шаги. И спросить рядом нет никого, но есть огромно желание.

Но похоже я и нашел ответ. Объекты я загружаю, но не выгружаю.. от сюда и перегруз.

Ищу способ решить... пробую то - что нашел тут
Код AS3:

                var i:int = Container.numChildren;
                while (i--)
                {
                        trace (Container.getChildAt(i));
                        Container.removeChild(Container.getChildAt(i));
                }


alatar 03.09.2010 19:59

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

Jewelz 03.09.2010 19:59

Код AS3:

Container.removeChild(Container.getChildAt(i));

лучше заменить на

Код AS3:

Container.removeChildAt(i);

а вобще большинство думаю пользуется таким способом:

Код AS3:

while(Container.numChildren)
{
    Container.removeChildAt(0);
}

давайте будем называть переменные с маленькой буквы ;)

leofit 03.09.2010 20:05

Упс, опередили =)
Код AS3:

while(Container.numChildren > 0) {
    Container.removeChildAt(0);
}

так красивее и быстрее
А еще учтите, что, хотя Вы и убираете объекты с экрана, они окончательно исчезнут тогда, когда в виртуальной машине вызовется сборка мусора, и исчезнут при том условии, что на эти объекты не ссылается что либо

а еще у лоадера есть метод unload()

а еще старайтесь всегда давать осмысленные имена функциям и переменным

Макс1977 03.09.2010 20:24

Все понял, соблюдать "гигиену", выгружать то, что загрузил, писать с маленькой буквы.

Век живи, век учись.

Спасибо большое всем) Попробую все!
(загорелся сильно)

Котяра 03.09.2010 22:35

писать не с маленькой буквы, а набрать в гугле as3 coding convention


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

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