| caseyryan |
08.02.2016 11:54 |
Интересный баг as3, instantiation on non-constructor
Обнаружил сегодня интересную штуку. Если сделать в классе вот так
Код AS3:
private static var _achievements:Array = [
new Achievement(100, 1, AchievementCondition.KILL_ZOMBIES),
new Achievement(101, 100, AchievementCondition.KILL_ZOMBIES),
new Achievement(102, 500, AchievementCondition.KILL_ZOMBIES),
new Achievement(103, 1000, AchievementCondition.KILL_ZOMBIES),
new Achievement(104, 5000, AchievementCondition.KILL_ZOMBIES),
new Achievement(105, 10000, AchievementCondition.KILL_ZOMBIES),
new Achievement(106, 50000, AchievementCondition.KILL_ZOMBIES),
new Achievement(107, 100000, AchievementCondition.KILL_ZOMBIES),
new Achievement(201, 10, AchievementCondition.KILL_BOSSES),
new Achievement(202, 50, AchievementCondition.KILL_BOSSES),
new Achievement(301, 10, AchievementCondition.SPEND_TIME_IN_GAME),
new Achievement(302, 60, AchievementCondition.SPEND_TIME_IN_GAME),
new Achievement(303, 120, AchievementCondition.SPEND_TIME_IN_GAME),
new Achievement(304, 120, AchievementCondition.SPEND_TIME_IN_GAME),
new Achievement(305, 300, AchievementCondition.SPEND_TIME_IN_GAME),
new Achievement(306, 30, AchievementCondition.SPEND_TIME_IN_GAME),
new Achievement(401, 10, AchievementCondition.COLLECT_WEAPONS),
new Achievement(501, 10, AchievementCondition.COLLECT_KEYS),
new Achievement(502, 50, AchievementCondition.COLLECT_KEYS),
new Achievement(503, 100, AchievementCondition.COLLECT_KEYS),
new Achievement(601, 5, AchievementCondition.COLLECT_ARTEFACTS),
new Achievement(602, 50, AchievementCondition.COLLECT_ARTEFACTS),
new Achievement(603, 100, AchievementCondition.COLLECT_ARTEFACTS),
new Achievement(604, 500, AchievementCondition.COLLECT_ARTEFACTS),
new Achievement(701, 2, AchievementCondition.PASS_CHAPTER),
new Achievement(702, 10, AchievementCondition.PASS_CHAPTER),
new Achievement(703, 20, AchievementCondition.PASS_CHAPTER)
];
А сам класс Achievement объявить в том же файле как internal, то в рантайме вывалится ошибка
Код AS3:
instantiation on non-constructor
Стало быть статики инициализируются раньше, чем internal классы. Если же Achievement вынести как отдельный класс, все работает отлично. Так же будет если переменную сделать не статической.
п.с. это не вопрос почему так происходит, а просто решил поделиться инфой)
|