FLEX 4-> ModuleLoader -> загрузить как байтовый массив - PullRequest
0 голосов
/ 21 декабря 2011

Знаете ли вы, где проблема с модулем загрузки flex4 и модулем загрузки как bytearray?

ml.loadModule ("filewithswfcontent.php", null);// ----- РАБОТАЕТ ОТЛИЧНО

ml.loadModule (null, bytearrayloadedbyurlloader);// ---- НИЧЕГО

Вот мой mxml файл ...

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="loadIndex();">
    <fx:Script>
    <![CDATA[
        import mx.events.ModuleEvent;

        private function loadIndex():void{
            var urlreq:URLRequest = new URLRequest("index.php");
            var urlloader:URLLoader = new URLLoader();
            urlloader.addEventListener(Event.COMPLETE, loadIndexResult);
            urlloader.load(urlreq);
        }

        private function loadIndexResult(event:Event):void{
            var urlloader:URLLoader = event.target as URLLoader;
            urlloader.removeEventListener(Event.COMPLETE, loadIndexResult);
            var barray:ByteArray; 
            barray = (urlloader.data as ByteArray);

            //ml.loadModule("index.php", null); // ----- WORKS PERFECTLY
            ml.loadModule(null, barray); // ---- NOTHING
        }
    ]]>
    </fx:Script>
    <s:ModuleLoader id="ml" width="500" height="500"/>
</s:Application>

1 Ответ

1 голос
/ 21 декабря 2011

Вы должны сделать две модификации

  1. Укажите формат данных URLLoader
  2. Укажите некоторую строку в качестве URL-адреса в loadModule.

    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955"    minHeight="600" creationComplete="loadIndex();">
    <fx:Script>
    <![CDATA[
        import mx.events.ModuleEvent;
    
        private function loadIndex():void{
            var urlreq:URLRequest = new URLRequest("index.php");
            var urlloader:URLLoader = new URLLoader();
            urlloader.dataFormat = URLLoaderDataFormat.BINARY;
            urlloader.addEventListener(Event.COMPLETE, loadIndexResult);
            urlloader.load(urlreq);
        }
    
        private function loadIndexResult(event:Event):void{
            var urlloader:URLLoader = event.target as URLLoader;
            urlloader.removeEventListener(Event.COMPLETE, loadIndexResult);
            var barray:ByteArray; 
            barray = (urlloader.data as ByteArray);
    
            //ml.loadModule("index.php", null); // ----- WORKS PERFECTLY
            ml.loadModule("MyModule", barray); // ---- WORKS PERFECTLY :)
        }
    ]]>
    </fx:Script>
    <s:ModuleLoader id="ml" width="500" height="500"/>
    </s:Application> 
    
...