微信小游戏开发-麻将内存资源管理(三)

在微信小游戏开发中,最重要的问题之一就是游戏的内存管理,想要微信小游戏能够持续稳定的运行下去,那么对游戏的运行内存要把握好,针对于平凡操作的资源对象(类似于图片、音频),我们不能时刻的去创建于销毁它,因为对象销毁后,该对象的内存资源不会立刻释放掉,微信小游戏有着自己的垃圾回收算法,所以针对这种对象,我们需要创建资源对象池,用的时候从对象池中进行获取,释放的时候返回给对象池就可以了,对象池代码如下:

const __ = {
  poolDic: Symbol('poolDic')
}


import Param from '../utils/Params'
/**
 * 简易的对象池实现
 * 用于对象的存贮和重复使用
 * 可以有效减少对象创建开销和避免频繁的垃圾回收
 * 提高游戏性能
 */
export default class ImagePool {
  constructor() {
    this[__.poolDic] = {}
  }

  /**
   * 根据对象标识符
   * 获取对应的对象池
   */
  getPoolBySign(name) {
    return this[__.poolDic][name] || (this[__.poolDic][name] = [])
  }

  /**
   * 根据传入的对象标识符,查询对象池
   * 对象池为空创建新的类,否则从对象池中取
   */
  getItemByClass(name, indexName) {
    let pool = this.getPoolBySign(name)

    let result = (pool
      ? pool[indexName]
      : null)

    return result
  }

  /**
   * pengweikang 20181105 初始化资源库池数据
   */
  init(){

    /**
     * pengweikang 20181105 初始化正面麻将牌数据
     */
    this[__.poolDic]['PAI'] = {}
    for (let i = 0; i < Param.PAI_LIST.length; i++){
      this[__.poolDic]['PAI'][Param.PAI_LIST[i]] = new Image()
      this[__.poolDic]['PAI'][Param.PAI_LIST[i]].src = 'images/pai/' + Param.PAI_LIST[i] + '.png'
    }

    /**
     * 初始化牌背景麻将
     */
    this[__.poolDic]['BG'] = {}


    this[__.poolDic]['BG']['SELF_PAI'] = new Image()//自己手牌
    this[__.poolDic]['BG']['SELF_PAI'].src = 'images/pai/bg/自己手牌.png'

    this[__.poolDic]['BG']['SELF_CHU_PAI'] = new Image()//自己出牌与对家出牌
    this[__.poolDic]['BG']['SELF_CHU_PAI'].src = 'images/pai/bg/自己出牌对家出牌对家碰牌.png'

    this[__.poolDic]['BG']['LEFT_PAI'] = new Image()//左侧手牌
    this[__.poolDic]['BG']['LEFT_PAI'].src = 'images/pai/bg/左家手牌.png'

    this[__.poolDic]['BG']['TOP_PAI'] = new Image()//对家手牌
    this[__.poolDic]['BG']['TOP_PAI'].src = 'images/pai/bg/对家手牌.png'

    this[__.poolDic]['BG']['RIGHT_PAI'] = new Image()//对家手牌
    this[__.poolDic]['BG']['RIGHT_PAI'].src = 'images/pai/bg/右家手牌.png'


  }

}

 

通过建立对象池连接,在真机测试是长期运行没有出现内存过大导致小程序自动推出问题。

运行界面如下图所示:

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值