OSDN Git Service

Version 0.6.87, fix SuperConstructor @ X.Class & force convert to PointerEvent @...
[pettanr/clientJs.git] / 0.6.x / js / 04_net / 04_XNetImage.js
index 40c4b7e..94eae12 100644 (file)
@@ -6,7 +6,10 @@
  * \r
  */\r
 \r
-var X_Net_Image_hasImage = !!window[ 'Image' ];\r
+var X_Net_Image_hasImage  = !!window[ 'Image' ],\r
+       X_Net_Image_image     = X_Net_Image_hasImage && new window[ 'Image' ](),\r
+       X_Net_Image_isElement = X.Type.isHTMLElement( X_Net_Image_image );\r
+       \r
 \r
 if( !X_Net_Image_hasImage ){\r
        alert( 'no Image!' );\r
@@ -17,27 +20,27 @@ if( !X_Net_Image_hasImage ){
  * new Image() のときに Image オブジェクトを作るもの(IE8-)と、HTMLImageElement を作るものがある。\r
  * Image は、X.EventDispatcher で、<img> は X.Dom.Node で。\r
  */\r
-X_NET_ImageWrapper = ( X_Net_Image_hasImage ? X.EventDispatcher : X.Dom.Node ).inherits(\r
+X_NET_ImageWrapper = ( !X_Net_Image_isElement ? X.EventDispatcher : X.Dom.Node ).inherits(\r
        'X.Net.Image',\r
        X.Class.POOL_OBJECT,\r
        {\r
-               _rawObject : X_Net_Image_hasImage && new Image,\r
+               _rawObject : X_Net_Image_image,\r
                \r
                tick       : 0,\r
                timerID    : 0,\r
                finish     : false,\r
-               abspath    : null,\r
-               delay      : null,\r
+               abspath    : '',\r
+               delay      : 0,\r
                timeout    : 0,\r
                \r
                Constructor : X_Net_Image_hasImage ?\r
                        (function(){\r
-                               this.listen( [ 'load', 'error', 'abort', X.Event.SUCCESS, X.Event.ERROR, X.Event.KILL_INSTANCE ] );\r
+                               this.listen( [ 'load', 'error', 'abort', X.Event.SUCCESS, X.Event.ERROR, X.Event.TIMEOUT, X.Event.KILL_INSTANCE ] );\r
                        }) :\r
                        (function(){\r
                                this.SuperConstructor( document.createElement( 'img' ) )\r
                                        .appendTo( X.Dom.Node._systemNode )\r
-                                       .listen( [ 'load', 'error', 'abort', X.Event.SUCCESS, X.Event.ERROR, X.Event.KILL_INSTANCE ] );\r
+                                       .listen( [ 'load', 'error', 'abort', X.Event.SUCCESS, X.Event.ERROR, X.Event.TIMEOUT, X.Event.KILL_INSTANCE ] );\r
                        }),\r
                \r
                load : function( abspath, opt_delay, opt_timeout ){\r
@@ -68,7 +71,7 @@ X_NET_ImageWrapper = ( X_Net_Image_hasImage ? X.EventDispatcher : X.Dom.Node ).i
                                                this.timerID = this.asyncDispatch( 0, { type : X.Event.ERROR } );\r
                                                return;\r
                                        };\r
-                                       size = X.Dom.Image.getActualDimension( X.UA.IE < 9 && X_Net_Image_hasImage ? this.abspath : this );\r
+                                       size = X.Dom.Image.getActualDimension( !X_Net_Image_isElement ? this.abspath : this );\r
                                        this.timerID = this.asyncDispatch( 0, {\r
                                                type : X.Event.SUCCESS,\r
                                                src  : this.abspath,\r
@@ -78,11 +81,12 @@ X_NET_ImageWrapper = ( X_Net_Image_hasImage ? X.EventDispatcher : X.Dom.Node ).i
                                        break;\r
                                case X.Event.SUCCESS :\r
                                case X.Event.ERROR :\r
+                               case X.Event.TIMEOUT :\r
                                        this.timerID && X.Timer.remove( this.timerID );\r
                                        this.timerID = this.asyncDispatch( 0, X.Event.COMPLETE );\r
                                        break;\r
                                case X.Event.KILL_INSTANCE :\r
-                                       this.timerID && X.Timer.remove( this.timerID );\r
+                                       this.reset();\r
                                        !X_Net_Image_hasImage && this.destroy(); // if xnode\r
                                        this.unlisten();\r
                                        break;\r
@@ -110,7 +114,7 @@ X_NET_ImageWrapper = ( X_Net_Image_hasImage ? X.EventDispatcher : X.Dom.Node ).i
                        this.timerID && X.Timer.remove( this.timerID );\r
                        this.timerID  = 0;\r
                        this.finished = false;\r
-                       this.abspath  = null;                   \r
+                       this.abspath  = '';\r
                }\r
        }\r
 );\r