Repository: flex-asjs Updated Branches: refs/heads/develop cc22300be -> 298d2041f
Added callbacks Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/298d2041 Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/298d2041 Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/298d2041 Branch: refs/heads/develop Commit: 298d2041ff2c02c203764ed22fb11e131e4b092e Parents: cc22300 Author: Harbs <[email protected]> Authored: Tue Jul 5 13:09:05 2016 +0300 Committer: Harbs <[email protected]> Committed: Tue Jul 5 13:09:05 2016 +0300 ---------------------------------------------------------------------- .../flex/org/apache/flex/net/URLBinaryLoader.as | 37 +++++++-- .../main/flex/org/apache/flex/net/URLLoader.as | 78 ++++++++++++++++++ .../main/flex/org/apache/flex/net/URLStream.as | 86 +++++++++++++++++++- 3 files changed, 191 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/298d2041/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLBinaryLoader.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLBinaryLoader.as b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLBinaryLoader.as index 2dfc490..ff9121b 100644 --- a/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLBinaryLoader.as +++ b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLBinaryLoader.as @@ -20,7 +20,6 @@ package org.apache.flex.net { import org.apache.flex.events.Event; - import org.apache.flex.events.EventDispatcher; import org.apache.flex.events.ProgressEvent; import org.apache.flex.utils.BinaryData; @@ -73,43 +72,63 @@ package org.apache.flex.net { super(); stream = new URLStream(); - stream.addEventListener(HTTPConstants.COMPLETE, onComplete); + stream.addEventListener(HTTPConstants.COMPLETE, completeHandler); } + /** + * Makes the URL request. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7.0 + */ public function load(request:URLRequest):void { stream.load(request); } + /** + * Cancels the URL request + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7.0 + */ public function close():void { stream.close(); + //TODO do we need a callback for camceling? } - private function redirectEvent(event:Event):void - { - dispatchEvent(event); - } - - private function onComplete(event:Event):void + private function completeHandler(event:Event):void { data = stream.response; if (data) { dispatchEvent(event); + if(onComplete) + onComplete(this); + } else { // TODO dipatch error event? dispatchEvent(new Event(HTTPConstants.IO_ERROR)); + if(onError) + onError(this); } + cleanupCallbacks(); } - private function onProgress(event:ProgressEvent):void + private function progressHandler(event:ProgressEvent):void { this.bytesLoaded = event.current this.bytesTotal = event.total; dispatchEvent(event); + if(onProgress) + onProgress(this); } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/298d2041/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLLoader.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLLoader.as b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLLoader.as index 809e120..102f525 100644 --- a/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLLoader.as +++ b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLLoader.as @@ -86,5 +86,83 @@ package org.apache.flex.net { throw new Error("URLLoader should not be instantiated. Use a derived class instead.") } + + protected function cleanupCallbacks():void + { + onComplete = null; + onError = null; + onProgress = null; + } + /** + * Callback for complete event. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7.0 + */ + public var onComplete:Function; + + /** + * Callback for error event. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7.0 + */ + public var onError:Function; + + /** + * Callback for progress event. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7.0 + */ + public var onProgress:Function; + + /** + * Convenience function for complete event to allow chaining. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7.0 + */ + public function complete(callback:Function):URLLoader + { + onComplete = callback; + return this; + } + + /** + * Convenience function for error event to allow chaining. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7.0 + */ + public function error(callback:Function):URLLoader + { + onError = callback; + return this; + } + + /** + * Convenience function for progress event to allow chaining. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7.0 + */ + public function progress(callback:Function):URLLoader + { + onProgress = callback; + return this; + } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/298d2041/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLStream.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLStream.as b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLStream.as index 7b5ff89..e2b1654 100644 --- a/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLStream.as +++ b/frameworks/projects/Network/src/main/flex/org/apache/flex/net/URLStream.as @@ -107,6 +107,9 @@ package org.apache.flex.net protected function flash_complete(event:flash.events.Event):void { dispatchEvent(new org.apache.flex.events.Event(HTTPConstants.COMPLETE)); + if(onComplete) + onComplete(); + cleanupCallbacks(); } COMPILE::SWF protected function flash_progress(event:flash.events.ProgressEvent):void @@ -129,6 +132,9 @@ package org.apache.flex.net if (xhr.readyState == 4 && xhr.status == 200) { dispatchEvent(new org.apache.flex.events.Event(HTTPConstants.COMPLETE)); + if(onComplete) + onComplete(); + cleanupHandlers(); }else if (xhr.readyState==4&&xhr.status==404){ // dispatchEvent(new IOErrorEvent(IOErrorEvent.IO_ERROR)); } @@ -146,9 +152,87 @@ package org.apache.flex.net } //TODO send an event that it's been aborted + + cleanupCallbacks(); + } + private function cleanupCallbacks():void + { + onComplete = null; + onError = null; + onProgress = null; + } + /** + * Callback for complete event. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7.0 + */ public var onComplete:Function; + + /** + * Callback for error event. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7.0 + */ public var onError:Function; - } + + /** + * Callback for progress event. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7.0 + */ + public var onProgress:Function; + + /** + * Convenience function for complete event to allow chaining. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7.0 + */ + public function complete(callback:Function):org.apache.flex.net.URLStream + { + onComplete = callback; + return this; + } + + /** + * Convenience function for error event to allow chaining. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7.0 + */ + public function error(callback:Function):org.apache.flex.net.URLStream + { + onError = callback; + return this; + } + + /** + * Convenience function for progress event to allow chaining. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.7.0 + */ + public function progress(callback:Function):org.apache.flex.net.URLStream + { + onProgress = callback; + return this; + } +} }
