PDA

Просмотр полной версии : АС3 в разных браузерах


hwarang
31.12.2010, 02:21
Вот столкнулся с проблемкой, мож кто уже ее решал.

Идет загрузка флэшки, потом xml, потом проигрывание флэшки.

При тестировании ролика - все нормально, в файрфоксе - все отлично.
А в ИЕ и в Хроме - на загрузке xml останавливается и все, хоть убей. В ИЕ - если нажать обновить броузеру - продалжается проигрывание флэшки с уже загруженным xml

Tails
31.12.2010, 04:34
Может разные браузеры используют разные флеш плееры, попробуйте обновить плеер в IE.

iNils
31.12.2010, 05:22
Хорошим подспорьем в решение проблемы, будет ссылка, где можно будет все увидеть.

ShockWave512
31.12.2010, 12:41
- при нажатии обновить - физически невозможно продолжение проигрывания, флешка в любом случае перегружается в браузер (из кеша или сайта) и всё начинается по новой

- как вы проверяете что загрузка хмл останавливается ? на какие события подписан загрузчик

- как дела в опере ?

- после загрузки хмл что за "проигрывание флешки" ? это метод ? что за принцип работы ?

hwarang
31.12.2010, 13:47
Вот код лодера и запуска нужного контента.
На самом таймлайне 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
А где вас научили именнованую функцию внутри функции объявлять? Я даже не знаю, какая у неё область видимости получается %).

У вас дебаг-плееры установлены в броузерах? Ошибки выдают? Знаете, как трейсы читать, когда флешка в браузере выполняется? Я бы трейсов для начала расставил, чтобы посмотреть в каком конкретно месте ошибка лезет.

hwarang
31.12.2010, 14:18
В опере работает просто отлично.

Я малость горе флешер ))))


Какие дебагеры посоветуете поставить? И как читать трейсы :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/) вменяемый.

hwarang
31.12.2010, 17:07
спасибо - будем разбиратся )

думаю справимся )

andrew911
31.12.2010, 20:43
У ИЕ проблемы с ProgressEvent.PROGRESS, если содержимое берется из кэша.
Так что лучше делайте манипуляции по событию Event.COMPLETE и не надейтесь на if (pcentXML==100)

iflamberg
31.12.2010, 20:46
Ха, точно, ProgressEvent может просто не возникнуть, если флешка уже в кеше.