![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Jul 2013
Сообщений: 9
|
Вообщем есть две флешки, первая загружает вторую. Во второй хранятся картинки, картинки вшиты во флешку через embed. Картинки из второй флешки в первую получаю через getDefinition.
Загружаю это всё на сервер. Включаю приложение, всё работает картинки передаются из второй флешки в первую, обновляю и после нефига ничё уже не работает. Как мне быть? Читал в хелпе что чаще чем один раз getdefinition использовать нельзя, но ведь страница обновилась. Что за бред? Помогите, пожалуйста. |
|
|||||
|
Регистрация: Jul 2013
Сообщений: 9
|
okouser, да я даже не знаю, что логить. Выкладывать слишком много.
Чистка кэша почему-то иногда помогает, а иногда нет,. то есть после чистки оно может работать, а может и нет, но однозначно помогает перезаливка приложения. |
|
|||||
|
Регистрация: Jul 2013
Сообщений: 9
|
Дебаговый плеер выдаёт такую ошибку:
TypeError: Error #1009: Cannot access a property or method of a null object reference. на строчке: m1[0] = new (Preloader.MenuChange.contentLoaderInfo.applicationDomain.getDefinition("Main_ChFon1") as Class)(); MenuChange это Loader который объявлен статически в классе Preloader. В этом же классе я гружу дополнительную swf, позже пытаюсь достать от туда картинку и получаю ошибку. |
|
|||||
|
Регистрация: Jul 2013
Сообщений: 9
|
Флешка точно загрузилась, т.к. в прелоадере это проверяется.
Ставлю В Loader передаю такой LoaderContext var lc: LoaderContext = new LoaderContext(); lc.securityDomain = SecurityDomain.currentDomain; public class Preloader extends MovieClip { private var z1: DisplayObject; private var z4: DisplayObject; private var z5: DisplayObject; public static const vstupr: String = "http://app.vk.com/c6121/u148888832/ec2e18914be11b.swf"; public static const menuch: String = "http://app.vk.com/c6119/u148888832/8c54d02ce667d4.swf"; public static var MenuChange: Loader; public static var VstupRolik: Loader; private var ml: int = 0; private var mt: int = 0; private var vl: int = 0; private var vt: int = 0; private var isdop: Boolean; public static var flashVars: Object; [Embed(source = "pictures/ZM/1Экран Фон.png")] public static var Zm1: Class; [Embed(source = "pictures/ZM/4Загрузка линии текст2.png")] public static var Zm4: Class; [Embed(source = "pictures/ZM/5Загрузка полная.png")] public static var Zm5: Class; public function Preloader() { if (stage) { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; } flashVars = stage.loaderInfo.parameters as Object; var obj: Object = JSON.parse(Preloader.flashVars.api_result); if (int(obj.response.IsRegister) == 0) isdop = true else isdop = false; if (isdop == true) { MenuChange = new Loader(); VstupRolik = new Loader(); Security.allowDomain("*"); var lc: LoaderContext = new LoaderContext(); lc.securityDomain = SecurityDomain.currentDomain; //lc.applicationDomain = ApplicationDomain.currentDomain; MenuChange.load(new URLRequest(menuch), lc); VstupRolik.load(new URLRequest(vstupr)); MenuChange.addEventListener(ProgressEvent.PROGRESS, progressm); VstupRolik.addEventListener(ProgressEvent.PROGRESS, progressv); } z1 = new Zm1(); z4 = new Zm4(); z5 = new Zm5(); z4.alpha = 0; z5.alpha = 0; addChild(z1); addChild(z4); addChild(z5); addEventListener(Event.ENTER_FRAME, checkFrame); loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress); loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError); // TODO show loader } private function ioError(e:IOErrorEvent):void { trace(e.text); } private function progressm(e: ProgressEvent):void { ml = e.bytesLoaded; mt = e.bytesTotal; } private function progressv(e: ProgressEvent):void { vl = e.bytesLoaded; vt = e.bytesTotal; } private function progress(e:ProgressEvent):void { // TODO update loader if (((loaderInfo.bytesLoaded+ml+vl) / (loaderInfo.bytesTotal+mt+vt)) * 100 < 50) { z4.alpha = ((((loaderInfo.bytesLoaded+ml+vl) / (loaderInfo.bytesTotal+mt+vt)) * 100) * 2) / 100; } else { //if ((loaderInfo.bytesLoaded / loaderInfo.bytesTotal) * 100 < 66) z5.alpha = ((((loaderInfo.bytesLoaded+ml+vl) / (loaderInfo.bytesTotal+mt+vt)) * 100 - 50) * 2) / 100; } } private function checkFrame(e:Event):void { if ((currentFrame+ml+vl) == (totalFrames+mt+vt)) { stop(); loadingFinished(); } } private function loadingFinished():void { removeEventListener(Event.ENTER_FRAME, checkFrame); loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress); loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioError); if (isdop == true) { MenuChange.removeEventListener(ProgressEvent.PROGRESS, progressm); VstupRolik.removeEventListener(ProgressEvent.PROGRESS, progressv); } // TODO hide loader removeChild(z1); removeChild(z4); removeChild(z5); startup(); } private function startup():void { var mainClass:Class = getDefinitionByName("Main") as Class; addChild(new mainClass() as DisplayObject); } } |
|
|||||
|
Регистрация: Jul 2013
Сообщений: 9
|
Сам не особо это понял. Но такой код прелоадера сгенерировал мне flashdevelop. Вероятно когда всё загрузилось он как-то переходит к следующему кадру, вот он и проверяет последний кадр или нет.
Добавлено через 2 часа 34 минуты Сделал так подписал все loader'ы на событие complete и завёл флаги для проверки на завершение загрузки. Проверял наличие флагов в enter_frame. И всё заработало. okouser, спасибо, это вы навели меня на эту мысль. |
|
|||||
|
Регистрация: Jul 2013
Сообщений: 9
|
Хорошо, спасибо, учту.
Хотя если это не эффективно, почему flashdevelop предлагает вариант preloader сделанный через ENTER_FRAME? |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:56. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|