View Full Version : Custom Events help
desmo953
06-19-2008, 04:01 PM
Here is my code, my problem is with the "getNumJobs" function. If I don't put static in front of public then it won't work and if i do, then it gives me this error: "1120: Access of undefined property nJobs." even though I already defined it as a public var. Any help or solutions??
package
{
import flash.events.*;
public class StartJobEvent extends Event
{
public static const STARTJOB:String = "timerComplete";
public var nJobs:Number;
public var jSpeed:Number;
public function StartJobEvent( type:String, numJobs:Number, jobSpeed:Number, bubbles:Boolean, cancelable:Boolean )
{
nJobs = numJobs;
jSpeed = jobSpeed;
super( type, bubbles, cancelable );
}
public static function getNumJobs():Number
{
return nJobs;
}
}
}
P.S. I am trying to access the "nJobs" variable throughout different parts of my program which is why I need the "getNumJobs" function.
Slowburn
06-19-2008, 04:17 PM
package
{
import flash.events.*;
public class StartJobEvent extends Event
{
public static const STARTJOB:String = "timerComplete";
protected var nJobs:Number;
protected var jSpeed:Number;
// give the parameters default values to test against
public function StartJobEvent( type:String, numJobs:Number = -1, jobSpeed:Number = -1, bubbles:Boolean = false, cancelable:Boolean = false ):void
{
super( type, bubbles, cancelable );
// set parameters
nJobs = numJobs;
jSpeed = jobSpeed;
}
// getter/setter & method to get the number of jobs
public function get numJobs():Number { return nJobs; }
public function set numJobs(value:Number):void { nJobs = value; }
public function getNumJobs():Number
{
return numJobs;
}
// getter/setter & method to get the job speed
public function get jobSpeed():Number { return jSpeed; }
public function set jobSpeed(value:Number):void { jSpeed = value; }
public function getJobSpeed():Number
{
return jobSpeed;
}
// override clone for this event
override public function clone():Event
{
return new StartJobEvent(type,numJobs,jobSpeed,bubbles,cancel able);
}
// override toString for this event
override public function toString():String
{
return formatToString("StartJobEvent","numJobs","jobSpeed","bubbles","cancelable");
}
}
}
Usage:
// add your listener somewhere
addEventListener( StartJobEvent.STARTJOB, onJobStarted, false, 0, true );
// dispacth your listener somewhere
// we can leave out bubbles and cancelable params because they have defaults.
// if we leave out numJobs or jobSpeed, these also have a default of -1
dispatchEvent( new StartJobEvent( StartJobEvent.STARTJOB, 5, 62 ) );
// on event dispatched...
function onJobStarted( event:StartJobEvent ):void
{
trace( "StartJobEvent::Number of Jobs", event.numJobs, event.getNumJobs() ); // both ways work
trace( "StartJobEvent::Job Speed", event.jobSpeed, event.getJobSpeed() ); // both ways work
}
desmo953
06-19-2008, 05:00 PM
Yes but is there a way to use that not in the actual even handler?
This is what I have....
addEventListener(StartJobEvent.STARTJOB, delayJob2);
dispatchEvent( new StartJobEvent(StartJobEvent.STARTJOB, 10, 8, false, false ));
public function delayJob2(myEvent:StartJobEvent):void
{
var delay:Timer = new Timer(2000,1);
delay.start();
delay.addEventListener(TimerEvent.TIMER_COMPLETE, startJob2);
//I know how to get to "nJobs" here with myEvent.nJobs
//but how do I reference to that with the function below?
}
public function startJob2(myEvent:TimerEvent):void
{
//I am trying to get "nJobs" here
makeJob2(10,8);
var some2Timer:Timer = new Timer(10);
some2Timer.addEventListener(TimerEvent.TIMER, job2CollDetection);
some2Timer.start();
}//End startJob2(myEvent:TimerEvent)
|
vBulletin® v3.8.5, Copyright ©2000-2012, Jelsoft Enterprises Ltd.