За последние три недели я потерял как минимум 120 человеко-часов из-за некоторых менее известных функций в ActionScript 3. Одна из проблем заключалась в том, что в Internet Explorer, если через LocalConnections отправлено слишком много сообщений, замедлять отправку сообщений, но в автономном проигрывателе и в Firefox этот порог значительно выше. Другое дело, что создаются статические значения класса, даже если сам член не используется:
import path.to.FooClass;
private function thisIsNeverCalledButItEnsuresThatFooClassIsImported():void
{
var f:FooClass = new FooClass();
}
Поскольку FooClass имел статическую ссылку на Singleton, этот экземпляр был создан, поэтому, когда я загружал модуль, который использовал этот Singleton, он связывался со значениями непредсказуемым образом.
Дополнительные случаи, когда вещи ведут себя неожиданным образом:
- MovieClip.addFrameScript
- flash.trace.Trace как класс
- int - это более быстрый класс инкремента, Number для математики быстрее, а uint невероятно медленный.
- PrintDataGrid, если он имеет только одну страницу, должен иметь пустое значение, добавленное в конец его dataProvider
- Если вы используете try ... перехватите два LocalConnections и подключите их к одному и тому же каналу, вы начнете сборку мусора без необходимости System.gc
Итак, вот вопрос (и я извиняюсь за то, что пропустил это в оригинальном посте), есть ли где-нибудь консолидированная документация для этого типа поведения? Есть ли какая-либо (даже не Adobe) документация по этим вопросам (веб-сайты, форумы, книги, НИЧЕГО)? Я знаю, что эти вещи, безусловно, достаточно легко для документирования, но кто-нибудь сделал это?
Если нет, я что-то упустил? Есть ли другие вопросы, о которых я должен знать?