PDA

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)