Документация малоизвестных свойств AS3 - PullRequest
1 голос
/ 17 сентября 2009

За последние три недели я потерял как минимум 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) документация по этим вопросам (веб-сайты, форумы, книги, НИЧЕГО)? Я знаю, что эти вещи, безусловно, достаточно легко для документирования, но кто-нибудь сделал это?

Если нет, я что-то упустил? Есть ли другие вопросы, о которых я должен знать?

Ответы [ 3 ]

0 голосов
/ 21 сентября 2009

К вашему сведению, есть два других метода обеспечения включения класса.

# 1 - этот синтаксис фактически используется в исходном коде Flex:

import path.to.FooClass; FooClass; // note double reference

public class References
{
    // No references needed in this class
}

# 2 - Использовать включает аргумент командной строки

-includes path.to.FooClass
0 голосов
/ 20 июля 2011

Вы всегда можете отправить свой опыт, используя раздел «Обратная связь» в справке. К сожалению, это менее очевидно, чем ссылка, которая раньше была внизу каждой страницы в старых файлах справки (которая также служила полезной функцией открытия окна браузера с веб-версией этой страницы справки).

Adobe говорит, что она включает комментарии из предыдущих версий справки в новые версии, но мои собственные наблюдения показывают, что бывают случаи, когда этого не происходит. Тем не менее, это и соответствующая кулинарная книга по-прежнему являются лучшим способом для тех, кто считает, что такого рода информация должна быть централизованной.

Обратите внимание, что основная цель модулей состоит в том, чтобы избежать многократной компиляции кода, поэтому импорт FooClass отчасти побеждал цель. Проблемы, которые у вас возникли в этом случае, - лишь одна из многих, которые случаются, если вы используете Singletons, и, к сожалению, первая официальная платформа, Cairngorm, поощрила их широкое использование. Выезд http://misko.hevery.com/2008/08/17/singletons-are-pathological-liars/.

0 голосов
/ 20 сентября 2009

Этот вид полезной информации очень часто не "централизован".Более того, то, что вы ищете, относится к опыту программиста (больше, чем к официальным документам).

...