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
- Visit your group "flexcoders" on the web.
- To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
- Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.