我们要比较2个对象的内容是否相同,即深度比较的方法可以用MD5等算法实现。
以下是代码片段:
var a:Object = new Object();
我们要比较2个对象的内容是否相同,即深度比较的方法可以用MD5等算法实现。
以下是代码片段:
var a:Object = new Object();
ImageLoader 是图像下载器, 是 Anyloader 系列的一个子集, AnyLoader 是多个 flash 实例组合的,由 JS 封装的套件的称呼,在需要调用的情况进行按需调用。
如图:
.png)
Anyloader 扩展愿景
因此Imageloader就是
imageloader 封装代码
https://github.com/kissyteam/kissy-ajbridge/tree/master/src/imageloader
imageloader AS3 核心代码
https://github.com/kingfo/anyloader
Kingfo 注:
1. 以下类来自dynamicflash 值得参考,其实改造成 readMultiByte 和 writeMultiByte 会更好。
这样就可以改造支持更广泛:
encode(string:String,targetCharsets:String='UTF-8',sourceCharsets:String = 'UTF-8' );
2. 以下类 >> 更改为 >>> 可能更严谨,但与 >>> 相对的 <<< 运算符并不提供,因此采用了 << 和 >> 。
package com . dynamicflash . util {
import flash . utils . ByteArray ;
public class Base64 {
private static const BASE64_CHARS : String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" ;
public static const version : String = "1.0.0" ;
public static function encode ( data : String ): String {
// Convert string to ByteArray
var bytes : ByteArray = new ByteArray ();
bytes . writeUTFBytes ( data );
// Return encoded ByteArray
return encodeByteArray ( bytes );
}
public static function encodeByteArray ( data : ByteArray ): String {
// Initialise output
var output : String = "" ;
// Create data and output buffers
var dataBuffer : Array ;
var outputBuffer : Array = new Array ( 4 ); // Kingfo : 6位 和 8位的公倍数正好是 24 ,因此需要 4个6位空间。
// Rewind ByteArray
data . position = 0 ;
// while there are still bytes to be processed
while ( data . bytesAvailable > 0 ) {
// Create new data buffer and populate next 3 bytes from data
dataBuffer = new Array ();
for ( var i : uint = 0 ; i < 3 && data . bytesAvailable > 0 ; i ++) {
dataBuffer [ i ] = data . readUnsignedByte ();
}
// Convert to data buffer Base64 character positions and
// store in output buffer
outputBuffer [ 0 ] = ( dataBuffer [ 0 ] & 0xfc ) >> 2 ; // kingfo: 很多同学会直接 >>2 ,这样不严谨。 这里做的非常好。这里只保留前6位。
outputBuffer [ 1 ] = (( dataBuffer [ 0 ] & 0x03 ) << 4 ) | (( dataBuffer [ 1 ]) >> 4 );
outputBuffer [ 2 ] = (( dataBuffer [ 1 ] & 0x0f ) << 2 ) | (( dataBuffer [ 2 ]) >> 6 );
outputBuffer [ 3 ] = dataBuffer [ 2 ] & 0x3f ;
// If data buffer was short (i.e not 3 characters) then set
// end character indexes in data buffer to index of '=' symbol.
// This is necessary because Base64 data is always a multiple of
// 4 bytes and is basses with '=' symbols.
for ( var j : uint = dataBuffer . length ; j < 3 ; j ++) {
outputBuffer [ j + 1 ] = 64 ;
}
// Loop through output buffer and add Base64 characters to
// encoded data string for each character.
for ( var k : uint = 0 ; k < outputBuffer . length ; k ++) {
output += BASE64_CHARS . charAt ( outputBuffer [ k ]);
}
}
// Return encoded data
return output ;
}
public static function decode ( data : String ): String {
// Decode data to ByteArray
var bytes : ByteArray = decodeToByteArray ( data );
// Convert to string and return
return bytes . readUTFBytes ( bytes . length );
}
public static function decodeToByteArray ( data : String ): ByteArray {
// Initialise output ByteArray for decoded data
var output : ByteArray = new ByteArray ();
// Create data and output buffers
var dataBuffer : Array = new Array ( 4 );
var outputBuffer : Array = new Array ( 3 );
// While there are data bytes left to be processed
for ( var i : uint = 0 ; i < data . length ; i += 4 ) {
// Populate data buffer with position of Base64 characters for
// next 4 bytes from encoded data
for ( var j : uint = 0 ; j < 4 && i + j < data . length ; j ++) {
dataBuffer [ j ] = BASE64_CHARS . indexOf ( data . charAt ( i + j ));
}
// Decode data buffer back into bytes
outputBuffer [ 0 ] = ( dataBuffer [ 0 ] << 2 ) + (( dataBuffer [ 1 ] & 0x30 ) >> 4 );
outputBuffer [ 1 ] = (( dataBuffer [ 1 ] & 0x0f ) << 4 ) + (( dataBuffer [ 2 ] & 0x3c ) >> 2 );
outputBuffer [ 2 ] = (( dataBuffer [ 2 ] & 0x03 ) << 6 ) + dataBuffer [ 3 ];
// Add all non-padded bytes in output buffer to decoded data
for ( var k : uint = 0 ; k < outputBuffer . length ; k ++) {
if ( dataBuffer [ k + 1 ] == 64 ) break ;
output . writeByte ( outputBuffer [ k ]);
}
}
// Rewind decoded data ByteArray
output . position = 0 ;
// Return decoded data
return output ;
}
public function Base64 () {
throw new Error ( "Base64 class is static container only" );
}
}
}
一句话,未来是apple的 也是 android。但最终是 android的,只是最早占领的是apple的
LOL
强调依次降降级
1. MUST