"сверху вниз", но после инициализации всех статических свойств, видимо, это и подразумевается под магией
Код AS3:
package
{
public class Season
{
_enumCreated = (trace("assign (true)") == null);// выполнится самым поледним
private static var _enumCreated:Boolean = (trace("init (false)") != null);
public static const WINTER : Season = new Season("winter");
public static const SPRING : Season = new Season("spring");
public static const SUMMER : Season = new Season("summer");
public static const AUTUMN : Season = new Season("autumn");
private var _seasonName : String;
public function Season(seasonName : String)
{
if (_enumCreated)
throw new Error("The enum is already created.");
_seasonName = seasonName;
trace( seasonName + " created");
}
public function get seasonName() : String {
return _seasonName;
}
}
}