Coding standards for writing code in ActionScript 3
Warning: This document is not complete.
Packages have lower.case.names separated by periods if needed. Names using mixedCase (starting with lower case) are ok, but short package names are preferred so that you aren't tempted to mixCase.
Classes have MixedCase names starting with a capital letter (and no hyphens).
Constants have CAPITALIZED_NAMES with words separated by underscores ‘_’.
Properties have mixedCase names starting with a lower case letter.
Events have mixedCase names starting with a lower case letter.
While Apache Flex had lots of event classes, Royale strives to have as few as possible since each class has download overhead. Royale has an Event which has an event name in the “type” field and no other payload. A ValueEvent contains one item that might be of interest to the listener. ValueChangeEvent has oldValue/newValue. There may be a StringEvent and other ‘typed’ event classes.
Event constants go in the class that will dispatch the event. Thus the developer only has to import one class and write the code that uses it.
The reason behind this change is partly that JavaScript runtimes don't really type-check event instances. Royale has code that will do the type-checking, but it is pretty rare to have to discriminate between event classes. So it is best to turn off type-checking code in Royale.
To compare:
public class TimerEvent { public const TIMER:String = "timer"; } public class Timer { dispatchEvent(new TimerEvent(TimerEvent.TIMER)); }
Usage:
import TimerEvent; import Timer; var timer:Timer = new Timer(); timer.addEventListener(TimerEvent.TIMER, timerHandler); function timerHandler(event:TimerEvent):void { }
public class Timer { public const TIMER:String = "timer"; dispatchEvent(new Event(TIMER)); }
Usage:
import Timer; var timer:Timer = new Timer(); timer.addEventListener(Timer.TIMER, timerHandler); function timerHandler(event:Event):void { }