Here is an example of custom event that can pass unlimited parameters using … (rest) parameter:

package {
	// Import class
	import flash.events.Event;
	// EventType
	public class EventType extends Event {
		// Properties
  		public var arg:*;
  		// Constructor
  		public function EventType(type:String, bubbles:Boolean = false, cancelable:Boolean = false, ... a:*) {
   			super(type, bubbles, cancelable);
   			arg = a;
   		}
		// Override clone
		override public function clone():Event{
			return new EventType(type, bubbles, cancelable, arg);
		};
	}
}

Usage:

dispatchEvent(new EventType("TYPE_NAME",false,false,"arg1","arg2"));
.
.
.
addEventListener("TYPE_NAME", onHandler);
function onHandler(e:EventType) {
	trace(e.arg[0]);
}

This is very useful when you just want to pass some variables via events.