如何在微信小游戏里使用JSZip

game.js 文件里

if ((typeof swan !== ‘undefined’) && (typeof swanGlobal !== ‘undefined’)) {
require(“swan-game-adapter.js”);
require(“libs/laya.bdmini.js”);
} else if (typeof wx!==“undefined”) {
require(“weapp-adapter.js”);
require(“libs/laya.wxmini.js”);
}
window.JSZip = require(“jszip.min.js”);
window.loadLib = require;
require(“index.js”);

加入这么一句红字就可以了 不需要在min.js里改任何东西
然后使用的时候

package
{
import laya.utils.Handler;
import laya.net.Loader;
import laya.utils.Browser;

public class ZipLoad
{
    public static var instance:ZipLoad = new ZipLoad();

    public function ZipLoad()
    {
        
    }

    public static function load(fileName:String,handler:Handler):void{
        instance.loadFile(fileName,handler);
    }

    public var handler:Handler = null;

    public function loadFile(fileName:String,handler:Handler):void{
        this.handler = handler;
        Laya.loader.load(fileName,new Handler(this,zipFun),null,Loader.BUFFER);
    }

    public function zipFun(ab:ArrayBuffer):void {
        var self:ZipLoad = this;
        Browser.window.JSZip.loadAsync(ab).then( function(jszip:Object):void{
            self.analysisFun( jszip );
        } );
    }

    public var currentJSZip:Object;
    public var fileNameArr:Array = [];
    public var resultArr:Array = [];
    
    public function analysisFun(jszip:Object):void{
        this.currentJSZip = jszip;
        for( var fileName:String in jszip.files ){
            fileNameArr.push(fileName + "");
        }
        this.exeOne();
    }

    public function exeOne():void {
        var self:ZipLoad = this;
        currentJSZip.file(fileNameArr[0]).async('string').then(function(content):void{
           self.over(content);
        });
    }

    public function over(content):void
    {
        var fileName:String = fileNameArr.shift();
        resultArr.push(fileName);
        resultArr.push(content);
        if( fileNameArr.length != 0 ){
            exeOne();
        }else{
            handler.runWith([resultArr]);
        }
    }
}   

}

使用的时候是这样

ZipLoad.load( “config.zip”,new Handler(this,zipFun) );

public function zipFun(arr:Array):void
{

}

var self:ZipLoad = this;
这句是为了把域传进去
不然回调里 你的域就是window 而不是当前实例

做的时候 走了很多弯路 比如去改jszip里的文件 不管用
还考虑过用ByteArray 但是 uncompress 又无法使用
经过老李的指点 也可以使用 微信自己的api
FileSystemManager.unzip(Object object)
https://developers.weixin.qq.com/minigame/dev/api/FileSystemManager.unzip.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML5游戏开发实战涉及多个关键方面,包括游戏设计、用户体验、性能优化以及利用HTML5的特性来实现各种游戏功能。以下是一些关于HTML5游戏开发实战的要点和建议: 游戏设计: 确定游戏类型和玩法,如动作、益智、角色扮演等。 设计游戏场景、角色、道具等元素,确保游戏具有吸引力和可玩性。 制定游戏规则和流程,确保游戏逻辑清晰、易于理解。 用户体验: 优化游戏界面布局,确保元素排列合理、易于操作。 注重游戏的音效和视觉效果,提高游戏的沉浸感。 设计合理的游戏难度和进度,让玩家能够逐步挑战自我。 性能优化: 利用Canvas或WebGL等技术实现高效的图形渲染。 优化游戏代码和资源加载,减少游戏卡顿和延迟。 针对移动设备进行优化,确保游戏在不同设备和网络环境下都能流畅运行。 HTML5特性利用: 利用HTML5的音频和视频支持,实现游戏中的背景音乐和音效。 使用HTML5的触摸事件处理,支持移动设备的触摸操作。 借助Web Storage API实现游戏数据的本地存储,方便玩家随时继续游戏。 跨平台兼容性: 确保游戏在不同浏览器和操作系统上都能正常运行。 测试游戏在不同设备上的性能表现,进行必要的优化和调整。 社区与反馈: 建立游戏社区,与玩家保持互动,收集他们的反馈和建议。 根据玩家反馈进行游戏更新和改进,提高游戏质量和用户满意度。 学习与借鉴: 学习和借鉴其他成功的HTML5游戏案例,了解它们的设计理念和技术实现。 参加游戏开发社区和论坛,与其他开发者交流经验和技术心得。 总之,HTML5游戏开发实战需要综合考虑多个方面,包括游戏设计、用户体验、性能优化以及HTML5特性的利用等。通过不断学习和实践,你可以逐渐掌握HTML5游戏开发的技巧和精髓,创造出受欢迎的游戏作品。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值