Flash / Flex / ActionScript/Network/URLLoader
Содержание
- 1 Accessing the Object That Registered the Listener
- 2 Accessing the Target Object
- 3 Add IOErrorEvent, HTTPStatusEvent, SecurityErrorEvent and Event.COMPLETE to URLLoader
- 4 Checking Load Progress
- 5 Display LoadBar
- 6 Event Listener Registration Examples
- 7 Events and Event Handling for URLLoader
- 8 Listen to the URLLoader complete event
- 9 Load an XML file
- 10 Load a picture
- 11 Loading a Block of Text (Including HTML and XML)
- 12 Loading Images
- 13 Loading XML
- 14 Trace loader data
- 15 Understanding Flash Player Security
- 16 URLLoader Complete event
Accessing the Object That Registered the Listener
<source lang="java">
package {
import flash.display.*; import flash.net.*; import flash.events.*; public class Main extends Sprite { public function Main( ) { var urlLoader:URLLoader = new URLLoader( ); urlLoader.addEventListener(Event.ruPLETE, completeListener); urlLoader.load(new URLRequest("someFile.txt")); } private function completeListener (e:Event):void { trace(e.currentTarget == e.target); // Displays: true } }
}
</source>
Accessing the Target Object
<source lang="java">
package {
import flash.display.*; import flash.net.*; import flash.events.*; public class Main extends Sprite { public function Main( ) { var urlLoader:URLLoader = new URLLoader( ); urlLoader.addEventListener(Event.ruPLETE, completeListener); urlLoader.load(new URLRequest("someFile.txt")); } private function completeListener (e:Event):void { trace("Load complete"); } }
}
</source>
Add IOErrorEvent, HTTPStatusEvent, SecurityErrorEvent and Event.COMPLETE to URLLoader
<source lang="java">
package {
import flash.events.*; import flash.net.*; import flash.display.*; public class Main extends Sprite{ public function Main( ) { var loader:URLLoader = new URLLoader( ); loader.addEventListener( IOErrorEvent.IO_ERROR, handleIOError ); loader.addEventListener( HTTPStatusEvent.HTTP_STATUS, handleHttpStatus ); loader.addEventListener( SecurityErrorEvent.SECURITY_ERROR, handleSecurityError ); loader.addEventListener( Event.ruPLETE, handleComplete ); // loader.dataFormat = DataFormat.VARIABLES; loader.load( new URLRequest( "example.txt" ) ); } function handleIOError( event:IOErrorEvent ):void { trace( "Load failed: IO error: " + event.text ); } function handleHttpStatus( event:HTTPStatusEvent ):void { trace( "Load failed: HTTP Status = " + event.status ); } function handleSecurityError( event:SecurityErrorEvent ):void { trace( "Load failed: Security Error: " + event.text ); } function handleComplete( event:Event ):void { trace( "The data has successfully loaded" ); }
}}
</source>
Checking Load Progress
<source lang="java">
package {
import flash.display.*; import flash.text.*; import flash.events.* import flash.net.*; public class Main extends Sprite { private var _output:TextField = new TextField( ); public function Main( ) { _output.width = stage.stageWidth; _output.height = stage.stageHeight; addChild( _output ); var loader:URLLoader = new URLLoader( ); loader.addEventListener( ProgressEvent.PROGRESS, handleProgress ); loader.load( new URLRequest( "example.txt" ) ); } private function handleProgress( event:ProgressEvent ):void { var percent:Number = Math.round( event.bytesLoaded / event.bytesTotal * 100 ); _output.text = " Loaded: " + event.bytesLoaded + "\n" + " Total: " + event.bytesTotal + "\n" + "Percent: " + percent; } }
}
</source>
Display LoadBar
<source lang="java">
package {
import flash.display.Sprite; import flash.events.*; import flash.net.*; public class Main extends Sprite { private var loader:URLLoader = new URLLoader(new URLRequest("http://example.ru/huge.xml")); private var total:Sprite = new Sprite(); private var loaded:Sprite = new Sprite(); public function Main() { total.graphics.beginFill(0xff0000, 1); total.graphics.drawRect(0, 0, 200, 10); total.graphics.endFill(); addChild(total); total.y = 200; total.x = 100; addChild(loaded); loaded.y = 200; loaded.x = 100; loader.addEventListener(Event.OPEN, openListener); loader.addEventListener(Event.ruPLETE, completeListener); loader.addEventListener(ProgressEvent.PROGRESS, progressListener); } private function openListener(event:Event):void { trace(" opened " + loader.bytesLoaded + " but nothing loaded yet "); } private function completeListener(event:Event):void { trace(" all done loading " + loader.data + " and here"s the xml file we loaded "); } private function progressListener(event:Event):void { var amount:Number = (loader.bytesLoaded / loader.bytesTotal) * 200; loaded.graphics.clear(); loaded.graphics.beginFill(0x00ff00, 1); loaded.graphics.drawRect(0, 0, amount, 10); loaded.graphics.endFill(); } }
}
</source>
Event Listener Registration Examples
<source lang="java">
package {
import flash.display.*; import flash.net.*; import flash.events.*; public class Main extends Sprite { public function Main( ) { var urlLoader:URLLoader = new URLLoader( ); urlLoader.addEventListener(Event.ruPLETE, completeListener); urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorListener); urlLoader.load(new URLRequest("someFile.txt")); } private function completeListener (e:Event):void { trace("Load complete"); } private function ioErrorListener (e:Event):void { trace("Error loading file."); } }
}
</source>
Events and Event Handling for URLLoader
<source lang="java">
package {
import flash.display.*; import flash.net.*; import flash.events.*; public class Main extends Sprite { public function Main( ) { var urlLoader:URLLoader = new URLLoader( ); urlLoader.addEventListener(Event.ruPLETE, completeListener); urlLoader.load(new URLRequest("someFile.txt")); } private function completeListener (e:Event):void { trace("Load complete"); } }
}
</source>
Listen to the URLLoader complete event
<source lang="java">
package {
import flash.events.*; import flash.net.*; import flash.display.*; public class Main extends Sprite{ public function Main( ) { var loader:URLLoader = new URLLoader( ); loader.addEventListener( Event.ruPLETE, handleComplete ); // loader.dataFormat = DataFormat.VARIABLES; loader.load( new URLRequest( "test.cfm" ) ); } private function handleComplete( event:Event ):void { var loader:URLLoader = URLLoader( event.target ); trace( "someText = " + loader.data.someText ); } }
}
</source>
Load an XML file
<source lang="java">
package {
import flash.display.Sprite; import flash.events.*; import flash.net.*; public class NetworkProject extends Sprite { private var loader:URLLoader= new URLLoader(new URLRequest("http://example.ru/test.xml")); public function NetworkProject() { loader.addEventListener(Event.ACTIVATE, activatedListener); loader.addEventListener(Event.ruPLETE, completeListener); loader.addEventListener(ProgressEvent.PROGRESS, progressListener); } private function activatedListener(event:Event):void { trace(" activated " + loader.bytesLoaded + " but nothing loaded yet "); } private function completeListener(event:Event):void { trace(" all done loading " + loader.data + " and here"s the xml file we loaded "); } private function progressListener(event:Event):void { trace(" we"re in progress, we"ve loaded " + loader.bytesLoaded + " out of " + loader.bytesTotal + " bytes "); } }
}
</source>
Load a picture
<source lang="java">
package {
import flash.display.Sprite; import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; public class Main extends Sprite { private var loader:Loader; public function Main() { loader = new Loader(); loader.load(new URLRequest("image.jpg ")); loader.contentLoaderInfo.addEventListener(Event.ruPLETE, contentComplete); addChild(loader); } private function contentComplete(event:Event):void { trace(loader.content); } }
}
</source>
Loading a Block of Text (Including HTML and XML)
<source lang="java">
package {
import flash.display.*; import flash.text.*; import flash.events.* import flash.net.*; public class Main extends Sprite { private var _output:TextField = new TextField( ); public function Main( ) { _output.width = stage.stageWidth; _output.height = stage.stageHeight; addChild( _output ); var loader:URLLoader = new URLLoader( );
// loader.dataFormat = DataFormat.TEXT;
loader.addEventListener( Event.ruPLETE, handleComplete ); loader.load( new URLRequest( "example.html" ) ); } private function handleComplete( event:Event ):void { var loader:URLLoader = URLLoader( event.target ); _output.htmlText = loader.data; } }
}
</source>
Loading Images
<source lang="java">
package {
import flash.display.Sprite; import flash.utils.ByteArray; import flash.display.Loader; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLLoaderDataFormat; import flash.geom.Rectangle; import flash.events.Event; public class Main extends Sprite { private var urlLoader:URLLoader = new URLLoader(); public function Main() { urlLoader.dataFormat = URLLoaderDataFormat.BINARY; urlLoader.load(new URLRequest("http://www.wbex.ru/image2.jpg")); urlLoader.addEventListener(Event.ruPLETE, completeHandler); } private function completeHandler(event:Event):void { var loader:Loader = new Loader(); loader.loadBytes(urlLoader.data); addChild(loader); } }
}
</source>
Loading XML
<source lang="java">
package {
import flash.display.*; import flash.events.*; import flash.net.*; import flash.utils.*; public class Main extends Sprite { public function Main( ) { var loader:URLLoader = new URLLoader( ); //loader.dataFormat = DataFormat.TEXT; loader.addEventListener( Event.ruPLETE, handleComplete ); loader.load( new URLRequest( "example.xml" ) ); } private function handleComplete( event:Event ):void { try { var example:XML = new XML( event.target.data ); trace( example ); } catch ( e:TypeError ) { trace( "Could not parse text into XML" ); trace( e.message ); } } }
}
</source>
Trace loader data
<source lang="java">
package {
import flash.events.*; import flash.net.*; import flash.display.*; public class Main extends Sprite{ public function Main( ) { var loader:URLLoader = new URLLoader( ); loader.addEventListener( IOErrorEvent.IO_ERROR, handleIOError ); loader.addEventListener( HTTPStatusEvent.HTTP_STATUS, handleHttpStatus ); loader.addEventListener( SecurityErrorEvent.SECURITY_ERROR, handleSecurityError ); loader.addEventListener( Event.ruPLETE, handleComplete ); // loader.dataFormat = DataFormat.VARIABLES; loader.load( new URLRequest( "example.txt" ) ); } function handleIOError( event:IOErrorEvent ):void { trace( "Load failed: IO error: " + event.text ); } function handleHttpStatus( event:HTTPStatusEvent ):void { trace( "Load failed: HTTP Status = " + event.status ); } function handleSecurityError( event:SecurityErrorEvent ):void { trace( "Load failed: Security Error: " + event.text ); } function handleComplete( event:Event ):void { var loader:URLLoader = URLLoader( event.target ); for ( var property:String in loader.data ) { trace( property + " = " + loader.data[property] ); } }
} }
</source>
Understanding Flash Player Security
<source lang="java">
PHPCommunication package {
import flash.display.Sprite; import flash.net.URLLoader; import flash.net.URLRequest; import flash.events.Event; public class Main extends Sprite { private var _username:String = "josh"; private var _id:String = "143"; private var loader:URLLoader; public function Main() { loader = new URLLoader(); loader.addEventListener(Event.ruPLETE, dataLoaded); var request:URLRequest = new URLRequest("http://localhost:8888/PHPScript.php?username=" + _username + "&id=" + _id); loader.load(request); } public function dataLoaded(event:Event):void { var xmlResponse:XML = XML((event.target as URLLoader).data); trace(xmlResponse); } }
}
</source>
URLLoader Complete event
<source lang="java">
package {
import flash.display.*; import flash.net.*; import flash.events.*; public class Main extends Sprite { public function Main( ) { var urlLoader:URLLoader = new URLLoader( ); urlLoader.addEventListener(Event.ruPLETE, completeListener); urlLoader.load(new URLRequest("someFile.txt")); } private function completeListener (e:Event):void { var loadedText:String = URLLoader(e.target).data; } }
}
</source>