UIComponent dispatch problem

Intrebari despre Flex

UIComponent dispatch problem

Mesajde alphagon » Joi Sep 10, 2009 6:06 pm

//myBaseClass.as:
Cod: Selectaţi tot
public class myBaseClass extends UIComponent
{
   public function RemoteService():void { super(); }
}

// mySubClass.as
Cod: Selectaţi tot
public class mySubClass extends myBaseClass
{
   public function mySubClass():void { super(); }
   public function DoShit():void
   {
      // do shit, then...
      shitttyRemoteObject.Retrieve.addEventListener(ResultEvent.RESULT,onRetrieve);
   }
   private function onRetrieve(event:ResultEvent):void
   {
      trace(event.message.body); // Totul bun pana aici...dar..
      this.parentApplication.dispatchEvent( new RemoteResultEvent( CustomResultEvent.RETRIEVE, event.message.body ) );
         // *********************
         // aici da eroare: TypeError: Error #1009: Cannot access a property or method of a null object reference.
         // nu ar trebui sa fie deja initiata ca si UIComponent?!...
         // *********************
   }
}


// myContainer.mxml initialize="init()"
Cod: Selectaţi tot
private var test:mySubClass;
private function init():void
{
   test = new mySubClass();
   this.addEventListener(CustomResultEvent.RETRIEVE, onCustomEvent); // bubbled event
}
private function onCustomEvent(event:CustomEvent):void
{
   // stop bubbled event propagation here!!!
   Alert.show("it never happens...");
   
}


Putina explicatie:

- ... mySubParent(n-1) <- mySubParent(n) <- myContainer <- mySubClass <- myBaseClass (as uicomponent)

- myContainer <- mySubClass : mySubClass transmite evenimente prin bubble DOAR pana la myContainer, acolo vor fi oprite pentru a nu interfera cu eventuale alte treburi mai in sus in ierarhie (vis-a-vis de discutia de pe celalalt thread :), nu o fi cea mai buna metoda, insa deocamdata vreau sa incerc si varianta asta.. ma lovesc cu capu de toti peretii pana gasesc usa potrivita :) ) Deci cam asta incerc sa reusesc momentan.
Asadar, in momentul dispatchului evidentiat cu "*"mai sus se buseste..... Aveti vreo idee de ce?.....Mutlumesc.
alphagon
 
Mesaje: 83
Membru din: Sâm Ian 17, 2009 4:11 am

Re: UIComponent dispatch problem

Mesajde Barna Biro » Joi Sep 10, 2009 6:17 pm

Vaii, habar n-am ce incerci sa faci acolo... Te-ai uitat ca parentApplication sa nu fie null?
Imagine
Avatar utilizator
Barna Biro
Administrator
 
Mesaje: 2037
Membru din: Vin Iul 25, 2008 1:06 am
Localitate: Lucerne, Switzerland

Re: UIComponent dispatch problem

Mesajde alphagon » Joi Sep 10, 2009 6:20 pm

Pfiii greu mi-e cu forumu asta sa ma exprim :))
Sa mai incerc o data...
Defapt, de ce ar fi null parentApplication'u? La initializarea cu super() nu ar trebui sa primeasca drept parinte myContainer-ul? Si-asa, nu ar fi null...
alphagon
 
Mesaje: 83
Membru din: Sâm Ian 17, 2009 4:11 am

Re: UIComponent dispatch problem

Mesajde alphagon » Joi Sep 10, 2009 6:22 pm

Incerc sa evit apelarea in mySubClass a unor chestii de gen: Application.application.Comp1.SubComp2.etc.dispatchEvent(..) ...
alphagon
 
Mesaje: 83
Membru din: Sâm Ian 17, 2009 4:11 am

Re: UIComponent dispatch problem

Mesajde Barna Biro » Joi Sep 10, 2009 6:25 pm

Dar ai verificat sa vezi daca e null sau nu? Sau doar mergi pe chestii imaginate? Foloseste debugger-u ala si vezi ce e null si ce nu e null... nu-i alba/neagra... ai tool-uri care sa te ajute sa vezi care-i problema, pai USE THEM! :)
Imagine
Avatar utilizator
Barna Biro
Administrator
 
Mesaje: 2037
Membru din: Vin Iul 25, 2008 1:06 am
Localitate: Lucerne, Switzerland

Re: UIComponent dispatch problem

Mesajde alphagon » Joi Sep 10, 2009 6:28 pm

Haha ce prost sunt! Era null binenteles. Si uitandu-ma pe geam, mi-am dat seama ca-s si mai prost:
am instantiat mySubClass-u cu un new mySubClass(), insa nu l-am adaugat niciodata in myContainer cu addChild() ;>> Asadar nu avea de unde sa aiba parentApplication definit. Cred ca asta era. Am scapat de eroare, acum sa testez event-ul :)
alphagon
 
Mesaje: 83
Membru din: Sâm Ian 17, 2009 4:11 am

Re: UIComponent dispatch problem

Mesajde Barna Biro » Joi Sep 10, 2009 6:35 pm

A dat Dumnezeu! Bine, am fost si eu "nesimtit", puteam sa-ti dau raspunsu clar de la inceput dar am preferat sa "te fortzez" sa-ti deschizi ochii cumva... si stai linistit ca nu esti prost, se mai intampla greseli de genu si la case mult mai mari. Asta-i viata, doar sa invatam sa ne deschidem ochii. :)
Imagine
Avatar utilizator
Barna Biro
Administrator
 
Mesaje: 2037
Membru din: Vin Iul 25, 2008 1:06 am
Localitate: Lucerne, Switzerland

Re: UIComponent dispatch problem

Mesajde alphagon » Joi Sep 10, 2009 7:28 pm

Intr-un final a functionat si event-ul, insa a dupa ce am corectat o mica chestie:
- folosisem:
Cod: Selectaţi tot
this.parentApplication.dispatchEvent( new RemoteResultEvent( CustomResultEvent.RETRIEVE, event.message.body ) );
..in mySubClass.as intr-o ierarhie de genul expus mai devreme: index0 <-... mySubParent(n-1) <- mySubParent(n) <- myContainer <- mySubClass <- myBaseClass;
- in contextul asta, "parentApplication"-ul din mySubClass se referea la ...aplicatia principala, adica index0, nicidecum la myContainer;
- varianta corecta: "parent": this.parent.dispatchEvent(...);

Aaaa, si da, este ok sa fii "nesimtit", ca mura-n gura e doar un "ajutor" pe termen scurt ;> Mersi.
alphagon
 
Mesaje: 83
Membru din: Sâm Ian 17, 2009 4:11 am


Înapoi la Adobe Flex

Cine este conectat

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

cron