打印

[AS3] 通过byteArray实现保存swf到文本文件,并且可以读取

无意中在网上看到的一篇好文章,共享一下,点此浏览源地址

实现过程

新建一个fla文件,名称自定,代码如下
复制内容到剪贴板
代码:
var bytes = new ByteArray ();
var ldr:URLLoader = new URLLoader();
ldr.dataFormat = URLLoaderDataFormat.BINARY;
var req:URLRequest = new URLRequest("loadedswf.swf");
ldr.addEventListener(Event.COMPLETE, completeHandler);
ldr.load(req);
function completeHandler(e:Event):void {
    bytes=ldr.data;
    var s:String="";
    for (var j : int = 0; j < bytes.length; j++){
        var n:String=bytes.readUnsignedByte().toString(16);
        if(n.length<2){
            n="0"+n;
        }
        s+=n;
    }
    trace(s);
}
其中的loadedswf.swf修改为你想载入的swf,ctrl+enter一下会输出许多字符串,将这些字符串保存为ta.txt备用

然后再新建一个fla文件,代码如下
复制内容到剪贴板
代码:
var ldr1:URLLoader = new URLLoader();
var ldr = new Loader ();
var req:URLRequest = new URLRequest("ba.txt");
ldr1.addEventListener(Event.COMPLETE, completeHandler1);
ldr1.load(req);
function completeHandler1(e:Event):void {
    var bA =new ByteArray ();
    var data1:Array=ldr1.data.split("");
    var data2:Array=[];
    for (var i : int = 0; i < data1.length; i +=2){
        data2.push("0x"+data1 [i]+data1[i+1]);
    }
    for (var j : int = 0; j < data2.length; j ++){
        bA[j] = data2[j];
    }
   
    ldr.contentLoaderInfo.addEventListener (Event.COMPLETE, completeHandler);
    ldr.loadBytes (bA);
}
function completeHandler(e:Event):void {
    //trace(ldr.content.testing);
    //var func = ldr.content.helloBaby;
    //func();
    //var ball = ldr.content.ball_mc;
    //addChild(ball);
    //ball.x = ball.y = 200;
    addChild(ldr.content);
}
其中的ldr.content就是载入的swf
附件: 您所在的用户组无法下载或查看附件,您需要注册/登录后才能查看!
很好很强大!!!,结合字符串加密和动态网页,应该可以用来做swf保护,呵呵呵
DO & do, so u do success!