webgame開發中的文件解密

上一篇講的是文件的加密,這一篇記錄一下如何加載並顯示圖片。

因爲圖片文件經過加密,已經成了二進制流的文件了(一堆亂碼),只能使用URLStream來加載資源了。

這裏有一點要注意:URLStream中的讀取操作是非阻塞的,在讀取數據之前必須使用bytesAvailable屬性來確定是否能夠獲取足夠的數據,如何不能獲取足夠的數據,將引發EOFError異常。

主要思路:

1、加載加密後的資源,使用URLStream

2、調用解密方法,獲取解密後的數據

3、使用Loader類的loadBytes方法加載資源

1: var urlLoader:URLStream = new URLStream();

       2: var url:String = getEncryptURL(url);    //通過需要加載的資源url,來獲取實際需要加載的資源地址,如xx.png實際將請求xx.p

       3:  

       4: //監聽urlLoader的事件

       5: //Event.Complete、IOErrorEvent.IO_ERROR、ProgressEvent.PROGRESS、HTTPStatusEvent.HTTP_STATUS、Event.OPEN

       6:  

       7: var req:URLRequest = new URLRequest(url);

       8:  

       9: urlLoadedCount = 0;

      10:  

      11: urlLoader.load(req);

      12:  

      13:  

      14:  

      15:  

      16:  

      17: //onCompleteHandler方法中

      18: var byte:ByteArray;

      19: var byteLen:int;

      20:  

      21: try 

      22: {

      23:     byteLen = urlLoader.bytesAvailable;

      24: }

      25: catch(e:Error)

      26: {

      27:     if (urlLoadedCount++ > 3)

      28:     {

      29:         return ;

      30:     }

      31:     

      32:     //reload 重新加載,直至超過3次

      33:     

      34:     return ;

      35: }

      36:  

      37: urlLoadedCount = 0;

      38:  

      39: byte = new ByteArray();

      40: urlLoader.readBytes(byte, 0, byteLen);

      41: byte = EncryptUtils.DeEncrypt(byte); //對數據進行解密操作,與上一篇中的加密方法對應

      42: byte.position = 0;

      43:  

      44: //開始加載圖片

      45: var loader = new Loader();

      46:  

      47: //監聽Event.Complete事件

      48: loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadImgCompleteHandler);

      49:  

      50: var context:LoaderContext = new LoaderContext();

      51: context.applicationDomain = ApplicationDomain.currentDomain;

      52: context.securityDomain = SecurityDomain.currentDomain;

      53:  

      54: loader.loadBytes(byte, context);

      55:  

      56:  

      57: //loadImgCompleteHandler方法

      58: 此時loader.content已經爲Bitmap類了,使用addChild即可完成圖片的加載

      59:  

      60:  

      61: //如果要加載的是xml、txt等文件內容,則無需此方法,使用byte.readUTFBytes(byte.bytesAvailable)便可得到解密後的字符串了

      62:

更多參考:

flash.display.Loader>>

flash.display.Bitmap>>

flash.net.URLStream>>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章