PXAbstractView vs PXViewListener

3 views
Skip to first unread message

Dante!

unread,
Sep 13, 2011, 12:51:27 PM9/13/11
to pixlib
Hello

Je voudrais qu'une vue B soit notifiée quand une vue A est "released",
sachant que A fait un notifyChanged automatiquement à ce moment là.

Or pour cela, B doit implementer l'interface PXViewListener, mais
c'est impossible car les méthodes onInitView et onReleaseView sont
protected quand on étend PXAbstractView.
Le cast "aView.addListener(bView as PXViewListener)" ne marche pas non
plus.

C'est pas possible qu'une vue en écoute une autre directement ? Il
faut passer par une commande ?
Dans ce cas pourquoi les vues auraient une méthode addListener ?

Il me manque un maillon de la chaine je pense ;-)
Help!

Laurent Deletelaere

unread,
Sep 14, 2011, 9:42:55 AM9/14/11
to pix...@googlegroups.com
Salut,

La m�thode PXAbstractView.addListener(type : PXViewListener) : Boolean
sert au moteur interne de Pixlib.

Le plus simple pour abonner une vue � une autre est d'utiliser la
m�thode addEventListener();

Dans ton cas, �a donnerait un truc du genre :
// class Main
public class Main extends PXBaseDocument
{
override protected function init() : void
{
PXLogManager.getInstance().addLogListener(PXTraceLayout.getInstance());
super.init();
}

override protected function onDocumentReady() : void
{
var a : A = new A(null, "A", null);
var b : B = new B(null, "B", null);

a.addEventListener(PXViewEvent.onReleaseViewEVENT, b.otherViewIsReleased);
a.release();
}
}

// class A
public class A extends PXAbstractView
{
public function A(viewOwner : PXPlugin = null, viewName : String =
null, dpo : DisplayObject = null)
{
super(viewOwner, viewName, dpo);
}
}

// class B
public class B extends PXAbstractView
{
public function B(viewOwner : PXPlugin = null, viewName : String =
null, dpo : DisplayObject = null)
{
super(viewOwner, viewName, dpo);
}

public function otherViewIsReleased(event : PXViewEvent) : void
{
logger.info("otherViewIsReleased :: " + event, this);
}
}

Ce qui te donnes en sortie :
[info][B] otherViewIsReleased :: net.pixlib.view::PXViewEvent

Apr�s, si tu tiens vraiment � passer par la m�thode addListener, tu peux
te cr�er ta propre AbstractView, en cr�ant une nouvelle impl�mentation
de l'interface PXView.

N'h�site pas si tu veux plus de d�tail.

++
Laurent

Le 13/09/11 18:51, Dante! a �crit :
> Hello
>
> Je voudrais qu'une vue B soit notifi�e quand une vue A est "released",
> sachant que A fait un notifyChanged automatiquement � ce moment l�.


>
> Or pour cela, B doit implementer l'interface PXViewListener, mais

> c'est impossible car les m�thodes onInitView et onReleaseView sont
> protected quand on �tend PXAbstractView.


> Le cast "aView.addListener(bView as PXViewListener)" ne marche pas non
> plus.
>

> C'est pas possible qu'une vue en �coute une autre directement ? Il


> faut passer par une commande ?

> Dans ce cas pourquoi les vues auraient une m�thode addListener ?

Dante!

unread,
Sep 14, 2011, 9:57:10 AM9/14/11
to pixlib
Effectivement !
Je ne sais pas pourquoi je suis resté bloqué sur addListener :-)
Merci

Laurent Deletelaere

unread,
Sep 14, 2011, 10:37:28 AM9/14/11
to pix...@googlegroups.com
Il y a des jours comme �a� :)

Le 14/09/11 15:57, Dante! a �crit :
> Effectivement !
> Je ne sais pas pourquoi je suis rest� bloqu� sur addListener :-)
> Merci
>

Reply all
Reply to author
Forward
0 new messages