Nelus
%Europe/Berlin %545 %2009, 13:06
Hallo iedereen,
Ik ben ondertussen al weer even met AS3.0 bezig en werk nu onderhand met custom events. Op de 1 of andere manier krijg ik het elke keer weer voor elkaar om problemen met mijn custom events te krijgen, vrij frustrerend. Ik heb al verschillende voorbeelden van custom events van internet erbij gepakt om te kijken wat hun anders doen. Maar ik zou het even niet weten.
Mijn applicatie maakt gebruik van AMFPHP om zijn data te ontvangen. Zodra de classe "BuddyConnection" een random conversation heeft ontvangen via zijn gateway, dispatched hij een event genaamt "NewConversationEvent".
De hierarchie van mijn applicatie (die van belang zijn voor dit probleem):
main.as
BuddyConnection.as
Conversation.ConversationHolder.as
Conversation.Events.NewConversationEvent.as
main.as:
package
{
import Conversation.*;
import Conversation.Events.NewConversationEvent;
import flash.display.Sprite;
import flash.events.Event;
/**
* ...
* @author ...
*/
public class Main extends Sprite
{
private var ConversationHold:ConversationHolder = new ConversationHolder();
private var MyBuddyConnection:BuddyConnection = new BuddyConnection();
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
addEventListener(NewConversationEvent.NEWCONV, startNewConversation);
this.addChild (ConversationHold);
MyBuddyConnection.getRandConversation();
}
private function startNewConversation (e:NewConversationEvent) {
trace ("Event gesignaleerd! We zijn nu bij startNewConversation");
ConversationHold.parseNewConversation(e.myConversa tion);
}
}
}
BuddyConnection.as
package
{
import Conversation.Events.NewConversationEvent;
import flash.display.MovieClip;
import flash.net.NetConnection;
import flash.net.Responder;
/**
* ...
* @author ...
*/
public class BuddyConnection extends MovieClip
{
private var MyConnection:NetConnection = new NetConnection();
private var ParseRandomTalk:Responder = new Responder(resultGetRandConversation);
public function BuddyConnection()
{
MyConnection.connect ("***************************");
}
public function getAllBuddyComps()
{
}
public function getRandConversation ()
{
MyConnection.call ("BuddyGateway.getRandomTalk", ParseRandomTalk, "1");
trace ("Nu bij: getRandConversation ");
}
private function resultGetRandConversation (resultConv:Object)
{
trace("Conversation ontvangen, dispatch event!");
if (dispatchEvent(new NewConversationEvent(resultConv, NewConversationEvent.NEWCONV, true, false)) == true) {
trace ("goed verstuurd");
}
}
}
}
ConversationHolder.as:
package Conversation
{
import Conversation.Events.NewConversationEvent;
import flash.display.MovieClip;
/**
* ...
* @author ...
*/
public class ConversationHolder extends MovieClip
{
private var ConversationGraph:ConversationHolderGraph = new ConversationHolderGraph();
public function ConversationHolder()
{
ConversationGraph.x = 0;
ConversationGraph.y = 0;
this.addChild (ConversationGraph);
}
public function parseNewConversation (results:Object)
{
trace (results.toString());
trace ("Elluw!");
}
}
}
NewConversationEvent.as
package Conversation.Events
{
import flash.events.Event;
/**
* ...
* @author ...
*/
public class NewConversationEvent extends Event
{
public static const NEWCONV:String = "newconv";
public var myConversation:Object;
public function NewConversationEvent(conversationResult:Object, type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
trace("Binnenin het event...");
super(type, bubbles, cancelable);
myConversation = conversationResult;
}
public override function clone():Event
{
return new NewConversationEvent(myConversation, type, bubbles, cancelable);
}
public override function toString():String
{
return formatToString("NewConversationEvent", "conversationResult", "type", "bubbles", "cancelable", "eventPhase");
}
}
}
Zoals jullie zien heb ik er al een aardig zootje van gemaakt met mijn traces, maargoed. De output tot nu toe:
Nu bij: getRandConversation
Conversation ontvangen, dispatch event!
Binnenin het event...
goed verstuurd
Ik ben ondertussen al weer even met AS3.0 bezig en werk nu onderhand met custom events. Op de 1 of andere manier krijg ik het elke keer weer voor elkaar om problemen met mijn custom events te krijgen, vrij frustrerend. Ik heb al verschillende voorbeelden van custom events van internet erbij gepakt om te kijken wat hun anders doen. Maar ik zou het even niet weten.
Mijn applicatie maakt gebruik van AMFPHP om zijn data te ontvangen. Zodra de classe "BuddyConnection" een random conversation heeft ontvangen via zijn gateway, dispatched hij een event genaamt "NewConversationEvent".
De hierarchie van mijn applicatie (die van belang zijn voor dit probleem):
main.as
BuddyConnection.as
Conversation.ConversationHolder.as
Conversation.Events.NewConversationEvent.as
main.as:
package
{
import Conversation.*;
import Conversation.Events.NewConversationEvent;
import flash.display.Sprite;
import flash.events.Event;
/**
* ...
* @author ...
*/
public class Main extends Sprite
{
private var ConversationHold:ConversationHolder = new ConversationHolder();
private var MyBuddyConnection:BuddyConnection = new BuddyConnection();
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
addEventListener(NewConversationEvent.NEWCONV, startNewConversation);
this.addChild (ConversationHold);
MyBuddyConnection.getRandConversation();
}
private function startNewConversation (e:NewConversationEvent) {
trace ("Event gesignaleerd! We zijn nu bij startNewConversation");
ConversationHold.parseNewConversation(e.myConversa tion);
}
}
}
BuddyConnection.as
package
{
import Conversation.Events.NewConversationEvent;
import flash.display.MovieClip;
import flash.net.NetConnection;
import flash.net.Responder;
/**
* ...
* @author ...
*/
public class BuddyConnection extends MovieClip
{
private var MyConnection:NetConnection = new NetConnection();
private var ParseRandomTalk:Responder = new Responder(resultGetRandConversation);
public function BuddyConnection()
{
MyConnection.connect ("***************************");
}
public function getAllBuddyComps()
{
}
public function getRandConversation ()
{
MyConnection.call ("BuddyGateway.getRandomTalk", ParseRandomTalk, "1");
trace ("Nu bij: getRandConversation ");
}
private function resultGetRandConversation (resultConv:Object)
{
trace("Conversation ontvangen, dispatch event!");
if (dispatchEvent(new NewConversationEvent(resultConv, NewConversationEvent.NEWCONV, true, false)) == true) {
trace ("goed verstuurd");
}
}
}
}
ConversationHolder.as:
package Conversation
{
import Conversation.Events.NewConversationEvent;
import flash.display.MovieClip;
/**
* ...
* @author ...
*/
public class ConversationHolder extends MovieClip
{
private var ConversationGraph:ConversationHolderGraph = new ConversationHolderGraph();
public function ConversationHolder()
{
ConversationGraph.x = 0;
ConversationGraph.y = 0;
this.addChild (ConversationGraph);
}
public function parseNewConversation (results:Object)
{
trace (results.toString());
trace ("Elluw!");
}
}
}
NewConversationEvent.as
package Conversation.Events
{
import flash.events.Event;
/**
* ...
* @author ...
*/
public class NewConversationEvent extends Event
{
public static const NEWCONV:String = "newconv";
public var myConversation:Object;
public function NewConversationEvent(conversationResult:Object, type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
trace("Binnenin het event...");
super(type, bubbles, cancelable);
myConversation = conversationResult;
}
public override function clone():Event
{
return new NewConversationEvent(myConversation, type, bubbles, cancelable);
}
public override function toString():String
{
return formatToString("NewConversationEvent", "conversationResult", "type", "bubbles", "cancelable", "eventPhase");
}
}
}
Zoals jullie zien heb ik er al een aardig zootje van gemaakt met mijn traces, maargoed. De output tot nu toe:
Nu bij: getRandConversation
Conversation ontvangen, dispatch event!
Binnenin het event...
goed verstuurd