Many thanks Dirk!

I've got a little closer now. I can see the jpg being fetched, the imageLoaded listener called and it looks like it is sets the myImage.dataObject property. However, flashplayer displays a broken link icon where the image should display, no errors reported.  I don't know if this is an event issue or something else relating to the image control.

One thing I had to add was loader.dataFormat = "BINARY" to the URLLoader as it was throwing type errors.

(While playing I ran a test grabbing a text file and setting the text property of a label control which worked fine using the same approach so I think the event handling works correctly)

Any ideas on the image display?

Thanks again
Angus


updated code...

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2005/mxml" xmlns="*" creationComplete="initApp()">
<mx:Script>
    <![CDATA[
        import MyURLLoader;
        import flash.util.trace;
        import mx.controls.Image;
               
        private function initApp() {
            var JPGLoader:MyURLLoader = new MyURLLoader();
            JPGLoader.addEventListener("dataLoaded",imageLoaded);
        }

        private function imageLoaded(event:Event):Void {
            var myImage:Image = new mx.controls.Image();
            myImage.dataObject = event.target.getData();
            myBox.addChild(myImage);
        }
       
    ]]>
</mx:Script>   
    <mx:Canvas width="100%" height="100%">
        <mx:HBox id="myBox">
        </mx:HBox>
    </mx:Canvas>
</mx:Application>

MyURLLoader.as
package {
    import flash.util.trace;
    import flash.display.Sprite;
    import flash.net.*;
    import flash.events.*;
   
    public class MyURLLoader extends Sprite {
       
        // public properties
        public var myJPG;
       
        public function MyURLLoader() {
            var loader:URLLoader  = new URLLoader();
            configureListeners(loader);
            var request:URLRequest = new URLRequest("http://flextest/sample.jpg");
            loader.dataFormat = "BINARY";
            loader.load(request);
        }
        public function getData() {
            return this.myJPG;
        }
        private function configureListeners(dispatcher:IEventDispatcher):Void {
            dispatcher.addEventListener(EventType.COMPLETE, onComplete);
            dispatcher.addEventListener(EventType.OPEN, onOpen);
            dispatcher.addEventListener(ProgressEventType.PROGRESS, onProgress);
            dispatcher.addEventListener(SecurityErrorEventType.SECURITY_ERROR, onSecurityError);
            dispatcher.addEventListener(HTTPStatusEventType.HTTP_STATUS, onHTTPStatus);
            dispatcher.addEventListener(IOErrorEventType.IO_ERROR, onIOError);
        }
        private function onComplete(event:Event):Void {
            var loader:URLLoader = URLLoader(event.target);
            this.myJPG = loader.data;
            trace(loader.dataFormat);
            var e:Event = new Event("dataLoaded");
            dispatchEvent(e);
            trace("onLoaded: " + loader.data);
        }
        private function onHTTPStatus(event:HTTPStatusEvent):Void {
            trace("onHTTPStatus: " + event);
        }
        private function onIOError(event:IOErrorEvent):Void {
            trace("onIOError: " + event);
        }
        private function onOpen(event:Event):Void {
            trace("onOpen: " + event);
        }
        private function onProgress(event:ProgressEvent):Void {
            trace("onProgress loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
        }
        private function onSecurityError(event:SecurityErrorEvent):Void {
            trace("onSecurityError: " + event);
        }
    }
}


--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com




YAHOO! GROUPS LINKS




Reply via email to