![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Feb 2007
Сообщений: 29
|
Здравствуйте уважаемые флэшеры. Возникла необходимость загрузить ресурс внутри функции и вернуть результат из функции только когда загрузка завершена (удачно или неудачно). Надеялся что можно сделать как то так:
package { import flash.display.*; import flash.events.*; import flash.net.URLRequest; public class ClipLoader { private var ldr:Loader; private var url:URLRequest; public var mc:MovieClip; private var _result:Number; public function ClipLoader(path:String, _mc :MovieClip){ mc = _mc; ldr = new Loader(); url = new URLRequest(path); _result = 0; } public function loadResource(){ ldr.load(url); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete); ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); while (_result == 0){ /*вот здесь хотелось бы что то вроде функции sleep(1000), как в C++*/;} return _result; } private function loadComplete(event:Event){ mc.addChild(ldr); _result = 1;} private function loadError(event:IOErrorEvent){ _result = -1;} } } |
|
|||||
|
А на что вам
Обработчик loadComplete, вызывается после полной загрузки, в нем и пишите свой цикл.
|
|
|||||
|
Регистрация: Feb 2007
Сообщений: 29
|
Спасибо за ответ. Проблема вот в чём: класс предполагается использовать вот так:
(фрагмент кода класса использующего ClipLoader) public var graphList:Array; //массив клипов private var countGraphObject: Number; //счётчик клипов ................................ .............. ..................... public function loadClip(path:String){ graphList.push(new MovieClip()); //Добавить новый клип в массив var ldr:CClipLoader = new CClipLoader(path, graphList[countGraphObject]); var _result = ldr.loadResource(); if (_result == -1) return -1; //то есть если клип загрузить не удалось вернули ложь countGraphObject++; return countGraphObject - 1; //Иначе вернули индекс клипа в массиве graphList } |
|
|||||
|
Заведите функцию,которая будет загружать отдельный клип,а в обработчике loadComplete снова ее вызывайте,если загружены еще не все клипы. И только потом спокойно работайте с массивом
var clipCount:int=10;//количество клипов var j:int=1; //номер текущего клипа var arClips:Array=new Array(); private function initLoading():void { loadClip(j); } private function loadClip(i:int):void { //лоадеры,реквесты и пр.пр ldClipLoader.addEventListener(Event.Complete,loadComplete); } private function loadComplete(event:Event):void { var tempClip:MovieClip=event.currenttarget as MovieClip;//получили arClips.push(tempClip); if (j<clipCount) { j++; loadClip(j); } } |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:08. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|