Просмотр полной версии : АС3 в разных браузерах
Вот столкнулся с проблемкой, мож кто уже ее решал.
Идет загрузка флэшки, потом xml, потом проигрывание флэшки.
При тестировании ролика - все нормально, в файрфоксе - все отлично.
А в ИЕ и в Хроме - на загрузке xml останавливается и все, хоть убей. В ИЕ - если нажать обновить броузеру - продалжается проигрывание флэшки с уже загруженным xml
Может разные браузеры используют разные флеш плееры, попробуйте обновить плеер в IE.
Хорошим подспорьем в решение проблемы, будет ссылка, где можно будет все увидеть.
ShockWave512
31.12.2010, 12:41
- при нажатии обновить - физически невозможно продолжение проигрывания, флешка в любом случае перегружается в браузер (из кеша или сайта) и всё начинается по новой
- как вы проверяете что загрузка хмл останавливается ? на какие события подписан загрузчик
- как дела в опере ?
- после загрузки хмл что за "проигрывание флешки" ? это метод ? что за принцип работы ?
Вот код лодера и запуска нужного контента.
На самом таймлайне 1-й фрейм - лодер, 2-й - лодер xml, и дальше уже контент.
public function Main() {
// ------------------- Loading Page --------------------------
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP_LEFT;
trace(Lang);
addEventListener(Event.ENTER_FRAME, appLoadingHandler);
function appLoadingHandler( event:Event ):void {
if (stage) {
var bytesTotal = stage.loaderInfo.bytesTotal;
var bytesLoaded = stage.loaderInfo.bytesLoaded;
loadingMovie.gotoAndStop(Math.floor(bytesLoaded*100/bytesTotal));
loadingMovie.loaderText.htmlText = varLoad + " " + Math.floor(bytesLoaded * 100 / bytesTotal) + "%"
loadingMovie.loaderText.autoSize = TextFieldAutoSize.CENTER;
if ( bytesLoaded >= bytesTotal) {
removeEventListener(Event.ENTER_FRAME, appLoadingHandler);
_root.play();
loaderXML();
}
}
}
}
public function loaderXML(IsContent:Boolean = false, isEnter:Boolean = false) {
var xmlURL:String = 'xml/'+ Lang +'/main.xml';
xmlLoader = new URLLoader();
//trace(isEnter);
xmlLoader.addEventListener(Event.COMPLETE, showXML);
xmlLoader.addEventListener(ProgressEvent.PROGRESS, traceLoaderXML);
xmlLoader.load(new URLRequest(xmlURL));
XML.ignoreWhitespace = true;
function traceLoaderXML(eventXML:ProgressEvent) {
pcentXML = int(eventXML.bytesLoaded / eventXML.bytesTotal * 100);
if (pcentXML==100) {
trace("all");
if(IsContent == true)
updateScene(isEnter);
else
_root.gotoAndPlay(3);
}
}
function showXML(e:Event):void {
websiteXML = new XML(e.target.data);
popupFunction();
}
}
public function updateScene(isEnter:Boolean = false){
_root.futerMovie.gotoAndPlay(2);
if(isEnter == false){
_root.linkPage = sceneNumButton;
_root.upMenu.menuControll.controllMenu.gotoAndPlay(1);
_root.allContent.play();
}
_root.logoMovie.gotoAndPlay(2);
}
iflamberg
31.12.2010, 14:04
А где вас научили именнованую функцию внутри функции объявлять? Я даже не знаю, какая у неё область видимости получается %).
У вас дебаг-плееры установлены в броузерах? Ошибки выдают? Знаете, как трейсы читать, когда флешка в браузере выполняется? Я бы трейсов для начала расставил, чтобы посмотреть в каком конкретно месте ошибка лезет.
В опере работает просто отлично.
Я малость горе флешер ))))
Какие дебагеры посоветуете поставить? И как читать трейсы :rolleyes:
ShockWave512
31.12.2010, 15:28
и сразу убрать слушатель с Event.ENTER_FRAME
лучше что нить типа Event.ADDED_TO_STAGE
код из фреймов перенести в класс документа
iflamberg правильно говорит, плюс вообще отказываться от функций в функциях и анонимных ... вложенность вредна
iflamberg
31.12.2010, 15:42
Ну я FlashDevelop пользуюсь и FlexBuilder, там встроенные дебагерры.
Теперь насчет трейсов в браузере:
сначала нужно поставить дебаг-плееры (http://www.adobe.com/support/flashplayer/downloads.html). IE нужен activeX, ff и опера хотят plugin. Потом нужно исправить mm.cfg, и тогда трейсы будут сыпаться в flashlog.txt. Вот тут туторчик (http://blog.flexexamples.com/2007/08/26/debugging-flex-applications-with-mmcfg-and-flashlogtxt/) вменяемый.
спасибо - будем разбиратся )
думаю справимся )
andrew911
31.12.2010, 20:43
У ИЕ проблемы с ProgressEvent.PROGRESS, если содержимое берется из кэша.
Так что лучше делайте манипуляции по событию Event.COMPLETE и не надейтесь на if (pcentXML==100)
iflamberg
31.12.2010, 20:46
Ха, точно, ProgressEvent может просто не возникнуть, если флешка уже в кеше.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.