Есть ли зависание или задержка при использовании функции Loader.load () во Flash / AS3? - PullRequest
1 голос
/ 11 августа 2011

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

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

Мне действительно нужно знать, если я загружаю, скажем, 5 небольших изображений PNG (вызов load() 5 раз в цикле) это вызоветFlash, чтобы зависать и игнорировать любой ввод мыши, или я говорю сумасшедший и должен искать проблему в другом месте.

Я понимаю, что Flash не многопоточный, но, безусловно, вызов load() не вызывает всего приложенияпросто отключить себя на 100-200 миллисекунд?

Любой вклад очень важен, спасибо.

Ответы [ 3 ]

2 голосов
/ 11 августа 2011

В ответ на ваш комментарий:

Больше не могу дать однозначного доказательства, кроме как сказать, что объект Loader на самом деле загружает SWF-файл или экранный объект некоторого типа, а затем флэш-память внутренне изменяет двоичные данные, затем внутренне анализирует SWF-файл или тип растрового изображения и передает его .content экранный объект в объекте Loader. Не обращайте внимания на отправку запроса URL, который выбирает двоичные данные перед всем этим. На фоне объекта загрузчика происходит много всего. Если вам нужны доказательства о модификации двоичных данных, просто загрузите изображение, затем скопируйте байты из загрузчика и сохраните его где-нибудь. Затем сравните с исходными данными. Вы увидите модификацию там, и на самом деле, если вы сохраните выходные байты обратно в изображение и попытаетесь открыть его с помощью средства просмотра изображений, оно не будет работать, это также является доказательством изменения. Кроме этого, вы можете опубликовать ссылку на SWF и попросить других протестировать ее, чтобы подтвердить, что с ними происходит то же самое, что, я уверен, будет. Это самое большое количество доказательств, которое вы получите, поскольку любой код, связанный с Loader или экранными объектами, имеет закрытый исходный код и не включен в проект Tamarin, часть с открытым исходным кодом флэш-виртуальной машины.

1 голос
/ 11 августа 2011

По поводу замораживания - читайте о LoaderContext # imageDecodingPolicy и смотрите здесь http://www.bytearray.org/?p=2931

0 голосов
/ 11 августа 2011

Чтобы ответить на мой собственный вопрос, нет, здесь нет задержки или зависания.Flash справляется со всем хорошо, просто получается, что вы должны следить за использованием MouseEvent.CLICK, потому что если вы меняете объект изображения во время перезагрузки после того, как вы сделали mousedown, но до наведения мыши, flash не будет отправлять событие clickВы не вызвали mousedown и mouseup на одном и том же объекте.Это заставило меня думать, что произошла задержка, так как казалось, что Flash не регистрировал мой щелчок мыши.

Спасибо всем, кто пытался решить проблему.

...