Help cu unloadAndStop();

Intrebari despre Actionscript 3.0

Help cu unloadAndStop();

Mesajde zanuGreuu » Lun Iun 21, 2010 3:51 pm

Salut,
Am o problema cu unloadingul.
Detalii:
- 3 butoane pe stage
- 2 din ele incarca swf extern.(unu swf simplu , iar celalalt are un video in SWF), unul are doar un link.
- functioneaza bine butoanele, fiecare incarca in mod corect swf extern.
- nu am nici un MovieClip ,doar butoanele.

Problema
- prima data apas Buton3 > incarca swf > ruleaza FLV
- cand apas Buton2 >vreau sa faca unload la SWF cu video si sa incarce swf simplu.
- cand apas Buton2 se incarca SWF simplu, dar ramane incarcat si SWF cu FLV .

Stiu ca FlashPlayer9 are mari probleme cu Unload, el facand unload doar la references, si nu curata garbage-collected. Acestea fiind cat de cat rezolvare cu FP10, folosind unloadAndStop(); , doar ca nu reusesc sa il fac sa functioneze.

Aici e codul :
Cod: Selectaţi tot
stop();
import caurina.transitions.Tweener;
import fl.transitions.TweenEvent;
import caurina.transitions.properties.ColorShortcuts;
ColorShortcuts.init();
//Button 1 -------------------------------------------------------------------------------------------------------------------------------------------------------
button.addEventListener(MouseEvent.CLICK, onMouseClick);
button.addEventListener(MouseEvent.ROLL_OVER, manageMouseOver, false, 0, true);
button.addEventListener(MouseEvent.ROLL_OUT, manageMouseOut, false, 0, true);

   function onMouseClick(e:MouseEvent):void{
      var request:URLRequest=new URLRequest("http://www.google.ro");
      navigateToURL(request,"_blank");
   }
   function manageMouseOver(event:MouseEvent):void{
        Tweener.addTween(button, {x:40, y:2, scaleX:1, scaleY:1.2,  time:1, transition:"easeIn"}); //   _color:0x000000 add color to button
        //trace("over");
   }
   function manageMouseOut(event:MouseEvent):void{
       Tweener.addTween(button, {x:40, y:2, scaleX:1, scaleY:1,  time:1, transition:"easeIn"});
      //trace("out");
   }
//Button 2 -------------------------------------------------------------------------------------------------------------------------------------------------------
button2.addEventListener(MouseEvent.CLICK, onMouseClick2);
button2.addEventListener(MouseEvent.ROLL_OVER, manageMouseOver2, false, 0, true);
button2.addEventListener(MouseEvent.ROLL_OUT,manageMouseOut2,false,0,true);

   function onMouseClick2(e:MouseEvent):void{
         var videoLoader = new Loader();
         addChild(videoLoader);
         videoLoader.load(new URLRequest("swf.swf"));
         videoLoader.x = 26;
          videoLoader.y = 47;
         //this.videoLoader2.unloadAndStop();
   }
   function manageMouseOver2(event:MouseEvent):void{
           Tweener.addTween(button2, {x:103, y:2, scaleX:1, scaleY:1.2,  time:1, transition:"easeIn"});
           //trace("over");
   }
   function manageMouseOut2(event:MouseEvent):void{
          Tweener.addTween(button2, {x:103, y:2, scaleX:1, scaleY:1,  time:1, transition:"easeIn"});
         //trace("out");
   }
//Button 3 -------------------------------------------------------------------------------------------------------------------------------------------------------
button3.addEventListener(MouseEvent.CLICK, onMouseClick3);
button3.addEventListener(MouseEvent.ROLL_OVER, manageMouseOver3, false, 0, true);
button3.addEventListener(MouseEvent.ROLL_OUT,manageMouseOut3,false,0,true);

   function onMouseClick3(e:MouseEvent):void{
         var videoLoader2 = new Loader();
         addChild(videoLoader2);
         videoLoader2.load(new URLRequest("flv.swf"));
         videoLoader2.x = 26;
          videoLoader2.y = 47;
   }
   function manageMouseOver3(event:MouseEvent):void{
           Tweener.addTween(button3, {x:166, y:2, scaleX:1, scaleY:1.2,  time:1, transition:"easeIn"});
           //trace("over");
   }
   function manageMouseOut3(event:MouseEvent):void{
          Tweener.addTween(button3, {x:166, y:2, scaleX:1, scaleY:1,  time:1, transition:"easeIn"});
         //trace("out");
   }


Astept un pic de ajutor , :D multumesc.

zaNU
Avatar utilizator
zanuGreuu
 
Mesaje: 23
Membru din: Mar Iun 15, 2010 4:38 pm

Re: Help cu unloadAndStop();

Mesajde Barna Biro » Lun Iun 21, 2010 5:28 pm

Nu lucra cu referinte multiple de Loadere... foloseste o singura referinta si inainte sa faci load(); la swf-ul dorit, sa faci mereu un unloadAndStop(); ( swf-ul incarcat anterior, tot va mai exista pentru o vreme deoarece nici cu unloadAndStop(); nu este golit instantaneu din memorie... dar teoretic, ar trebui sa-ti stearga diferite event listenere si sa opreasca sunetele si videourile daca poate ).

Off topic: Personal, evit sa lucrez cu swf-uri multiple... iti doar creeaza batai aiurea de cap.
Imagine
Avatar utilizator
Barna Biro
Administrator
 
Mesaje: 2037
Membru din: Vin Iul 25, 2008 1:06 am
Localitate: Lucerne, Switzerland

Re: Help cu unloadAndStop();

Mesajde zanuGreuu » Vin Iun 25, 2010 5:20 pm

mersi , nu lucrez cu swf multiple , da vreau sa invat acuma AS3 si ma interesa de ce functioneaza ciudat loadingu de external SWF.
l-am rezolvat pana la urma
Avatar utilizator
zanuGreuu
 
Mesaje: 23
Membru din: Mar Iun 15, 2010 4:38 pm


Înapoi la ActionScript 3.0

Cine este conectat

Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 1 vizitator

cron