Решил тут записывать о моментах возникающих в разработке на Flash (AS), себе для памяти, а может кому еще пригодится.
Практически все знают, что IE очень своеобразный браузер, но он все еще не перестает меня удивлять. Даже казалось бы в кроссплатформенный флеш он вносит свои коррективы.
VS
Итак был себе мирно код для прелоадера на AS3, никого не трогал:
loaderInfo.addEventListener(ProgressEvent.PROGRESS, loadingListener);
private function loadingListener (e:ProgressEvent):void
{
if(e.bytesLoaded>=e.bytesTotal)
{
gotoAndStop(2);
}
}
Но, оказывается, если Internet Explorer закэшировал флешку, то ProgressEvent не работает.
Поэтому, надо использовать старый добрый onEnterFrame:
root.addEventListener("enterFrame",onEnterFrame);
function onEnterFrame(e:Event)
{
if(loaderInfo.bytesLoaded >= loaderInfo.bytesTotal)
{
gotoAndStop(2);
root.removeEventListener("enterFrame",onEnterFrame);
}
}
либо отдельно добавить проверку загрузки
if (loaderInfo.bytesLoaded >= loaderInfo.bytesTotal)
{
gotoAndStop(2);
}
Приятного кодинга!
На самом деле, Flash Player очень даже не кросс платформенный. Иногда оптимизация флеш-ролика под разные браузеры, занимает намного больше времени, чем оптимизация HTML-кода.
ОтветитьУдалитьСуществует две версии плагина:
1. Для Internet Explorer
2. Для FireFox, Opera, WebKit
Всегда стоит проверять обе версии. Бывает что-то работает в одном, но не работает в другом.
Также при вставки флеш-ролика на странице, есть параметр "wmode". От него тоже многое зависит. Если, например, подставить ему значение "transparent", то в редактируемых текстовых полях не будут вводиться русские буквы (а также все другие не латинские символы). При значении "opaque", событие MouseEvent.MOUSE_WHEEL ловиться в версии для IE, но не ловиться для FireFox. Следует следить за этим значением.
Плюс существует версии FlashPlayer для Linux.
2 AS3Coder
ОтветитьУдалитьЧитал, что wmode рекомендуют ставить "opaque" (если выбирать между "transparent" и "opaque"). Правда в нем тоже русские буквы в input-тексте не работают, почему не поправят - непонятно
Достаточно добавить листенер на событие Event.COMPLETE и проблема больше не имеет места, совсем. И не надо никаких проверок на кол-во байт.
ОтветитьУдалитьПонимаю, что статья старая, может уже и сами знаете -- но мало ли, может так и ходите в неведении, мучаясь в раздумьях, и своих читателей в заблждение вводите. :)
А могли бы вы подробнее объяснить как это сделать? Я тоже столкнулся с проблемой, что не работает скрол в Firefox.
УдалитьДа, тогда только начинал работать с AS3, и такое поведение ИЕ даже во флеш очень удивило ;)
ОтветитьУдалить