微信小程序加载construct2游戏

之前有写过AndroidStudio可以加载construct2网页游戏,这次介绍一下通过微信小程序加载construct2游戏。

一、将construct2游戏导出,导出方法如下:

选择一个文件夹保存

二、 打开文件夹,选择需要的文件,如图

选择这些文件,存入到准备好的game文件夹中,其余文件内容在后面给出。

 由于images文件夹大小超过了4M,所以被分为两个(分包),分包的方法之前写过:https://blog.csdn.net/m0_47923157/article/details/117753500,可以学习,如果文件夹大小在2M左右不需要分包。

三、修改代码内容

data.js重命名为data.json。(如果进行了分包操作,则需要打开data.json文件夹修改图片的名字,修改的方法:同时按住CTRL+H键,搜索到图片的名字,修改为现在所在的文件夹,全部替换,之后保存。)

四、打开微信小程序开发者工具,选择小游戏选项,打开game文件夹,即可运行游戏。

下面是其余的代码,代码有点多,不知道怎么操作的可以问我。

game.js

import './js/libs/weapp-adapter'
import './js/libs/symbol'

import './c2runtime.js'

window.scrollTo=function(){
    
}

function testUpdate(){
  ctx.clearRect(0, 0, window.canvas.width, window.canvas.height)

}
function loadpackages(packages,index=0){

  if(index >= packages.length){
    cr_createRuntime(canvas);
    return;
  }
  wx.loadSubpackage({
    name: packages[index], // name 可以填 name 或者 root
    success: function(res) {
      // 分包加载成功后通过 success 回调
      console.log("loadpackages success:"+packages[index]);
      loadpackages(packages,++index);
    },
    fail: function(res) {
      console.log("loadpackages faild:"+packages[index]);
      // 分包加载失败通过 fail 回调
    }
  })
}
loadpackages(["images2"],0);

game.json 

{
    "deviceOrientation": "landscape",
    "subpackages":[
        {
          "name": "images2",
          "root": "images2/"
        }
      ]
}

project.config.json

{
  "description": "项目配置文件。",
  "setting": {
    "urlCheck": false,
    "es6": true,
    "enhance": false,
    "postcss": true,
    "preloadBackgroundData": false,
    "minified": true,
    "newFeature": true,
    "coverView": true,
    "nodeModules": false,
    "autoAudits": false,
    "showShadowRootInWxmlPanel": true,
    "scopeDataCheck": false,
    "uglifyFileName": false,
    "checkInvalidKey": true,
    "checkSiteMap": true,
    "uploadWithSourceMap": true,
    "compileHotReLoad": false,
    "useMultiFrameRuntime": true,
    "useApiHook": true,
    "useApiHostProcess": false,
    "babelSetting": {
      "ignore": [],
      "disablePlugins": [],
      "outputPath": ""
    },
    "enableEngineNative": false,
    "bundle": false,
    "useIsolateContext": false,
    "useCompilerModule": true,
    "userConfirmedUseCompilerModuleSwitch": false,
    "userConfirmedBundleSwitch": false,
    "packNpmManually": false,
    "packNpmRelationList": [],
    "minifyWXSS": true
  },
  "compileType": "game",
  "libVersion": "1.9.94",
  "appid": "wx9370f38fe470e1a9",
  "projectname": "minigame-1",
  "condition": {
    "search": {
      "list": []
    },
    "conversation": {
      "list": []
    },
    "game": {
      "currentL": -1,
      "list": []
    },
    "miniprogram": {
      "list": []
    }
  }
}

js文件夹:

包含libs文件夹(createjs游戏的js代码也放到js文件夹中的)

libs文件夹包含symbol.jsweapp-adapter.js

//symbol.js代码

let Symbol = window.Symbol
let idCounter = 0

if (!Symbol) {
  Symbol = function Symbol(key) {
    return `__${key}_${Math.floor(Math.random() * 1e9)}_${++idCounter}__`
  }

  Symbol.iterator = Symbol('Symbol.iterator')
}

window.Symbol = Symbol
//weapp-adapter.js代码

/** *** */ (function (modules) { // webpackBootstrap
/** *** */ 	// The module cache
/** *** */ 	const installedModules = {}

  /** *** */ 	// The require function
  /** *** */ 	function __webpack_require__(moduleId) {
    /** *** */ 		// Check if module is in cache
    /** *** */ 		if (installedModules[moduleId])
    /** *** */ 			{ return installedModules[moduleId].exports }

    /** *** */ 		// Create a new module (and put it into the cache)
    /** *** */ 		const module = installedModules[moduleId] = {
      /** *** */ 			exports: {},
      /** *** */ 			id: moduleId,
      /** *** */ 			loaded: false
      /** *** */}

    /** *** */ 		// Execute the module function
    /** *** */ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__)

    /** *** */ 		// Flag the module as loaded
    /** *** */ 		module.loaded = true

    /** *** */ 		// Return the exports of the module
    /** *** */ 		return module.exports
    /** *** */ 	}


  /** *** */ 	// expose the modules object (__webpack_modules__)
  /** *** */ 	__webpack_require__.m = modules

  /** *** */ 	// expose the module cache
  /** *** */ 	__webpack_require__.c = installedModules

  /** *** */ 	// __webpack_public_path__
  /** *** */ 	__webpack_require__.p = ''

  /** *** */ 	// Load entry module and return exports
  /** *** */ 	return __webpack_require__(0)
/** *** */ }([
/* 0 */
/***/ (function (module, exports, __webpack_require__) {
    const _window2 = __webpack_require__(1)

    const _window = _interopRequireWildcard(_window2)

    function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj } else { const newObj = {}; if (obj != null) { for (const key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key] } } newObj.default = obj; return newObj } }

    const global = GameGlobal

    function inject() {
	  _window.addEventListener = _window.canvas.addEventListener = function (type, listener) {
	    _window.document.addEventListener(type, listener)
	  }
	  _window.removeEventListener = _window.canvas.removeEventListener = function (type, listener) {
	    _window.document.removeEventListener(type, listener)
	  }

	  const _wx$getSystemInfoSync = wx.getSystemInfoSync()
	      const platform = _wx$getSystemInfoSync.platform

	  // 开发者工具无法重定义 window


	  if (typeof __devtoolssubcontext === 'undefined' && platform === 'devtools') {
	    for (const key in _window) {
	      const descriptor = Object.getOwnPropertyDescriptor(global, key)

	      if (!descriptor || descriptor.configurable === true) {
	        Object.defineProperty(window, key, {
	          value: _window[key]
	        })
	      }
	    }

	    for (const _key in _window.document) {
	      const _descriptor = Object.getOwnPropertyDescriptor(global.document, _key)

	      if (!_descriptor || _descriptor.configurable === true) {
	        Object.defineProperty(global.document, _key, {
	          value: _window.document[_key]
	        })
	      }
	    }
	    window.parent = window
	  } else {
	    for (const _key2 in _window) {
	      global[_key2] = _window[_key2]
	    }
	    global.window = _window
	    window = global
	    window.top = window.parent = window
	  }
    }

    if (!GameGlobal.__isAdapterInjected) {
	  GameGlobal.__isAdapterInjected = true
	  inject()
    }
    /***/ }),
  /* 1 */
  /***/ (function (module, exports, __webpack_require__) {
    Object.defineProperty(exports, '__esModule', {
	  value: true
    })
    exports.cancelAnimationFrame = exports.requestAnimationFrame = exports.clearInterval = exports.clearTimeout = exports.setInterval = exports.setTimeout = exports.canvas = exports.location = exports.localStorage = exports.HTMLElement = exports.FileReader = exports.Audio = exports.Image = exports.WebSocket = exports.XMLHttpRequest = exports.navigator = exports.document = undefined

    const _WindowProperties = __webpack_require__(2)

    Object.keys(_WindowProperties).forEach(function (key) {
	  if (key === 'default' || key === '__esModule') return
	  Object.defineProperty(exports, key, {
	    enumerable: true,
	    get: function get() {
	      return _WindowProperties[key]
	    }
	  })
    })

    const _constructor = __webpack_require__(3)

    Object.keys(_constructor).forEach(function (key) {
	  if (key === 'default' || key === '__esModule') return
	  Object.defineProperty(exports, key, {
	    enumerable: true,
	    get: function get() {
	      return _constructor[key]
	    }
	  })
    })

    const _Canvas = __webpack_require__(9)

    const _Canvas2 = _interopRequireDefault(_Canvas)

    const _document2 = __webpack_require__(10)

    const _document3 = _interopRequireDefault(_document2)

    const _navigator2 = __webpack_require__(17)

    const _navigator3 = _interopRequireDefault(_navigator2)

    const _XMLHttpRequest2 = __webpack_require__(18)

    const _XMLHttpRequest3 = _interopRequireDefault(_XMLHttpRequest2)

    const _WebSocket2 = __webpack_require__(19)

    const _WebSocket3 = _interopRequireDefault(_WebSocket2)

    const _Image2 = __webpack_require__(11)

    const _Image3 = _interopRequireDefault(_Image2)

    const _Audio2 = __webpack_require__(12)

    const _Audio3 = _interopRequireDefault(_Audio2)

    const _FileReader2 = __webpack_require__(20)

    const _FileReader3 = _interopRequireDefault(_FileReader2)

    const _HTMLElement2 = __webpack_require__(4)

    const _HTMLElement3 = _interopRequireDefault(_HTMLElement2)

    const _localStorage2 = __webpack_require__(21)

    const _localStorage3 = _interopRequireDefault(_localStorage2)

    const _location2 = __webpack_require__(22)

    const _location3 = _interopRequireDefault(_location2)

    function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : {default: obj} }

    exports.document = _document3.default
    exports.navigator = _navigator3.default
    exports.XMLHttpRequest = _XMLHttpRequest3.default
    exports.WebSocket = _WebSocket3.default
    exports.Image = _Image3.default
    exports.Audio = _Audio3.default
    exports.FileReader = _FileReader3.default
    exports.HTMLElement = _HTMLElement3.default
    exports.localStorage = _localStorage3.default
    exports.location = _location3.default


    // 暴露全局的 canvas
    const canvas = new _Canvas2.default()

    exports.canvas = canvas
    expo
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
微信小程序可以使用 JavaScript 语言和 WXML、WXSS 标记语言来实现建造者模式。建造者模式可以用于创建复杂的对象,将对象的构建过程分解为多个步骤,使得构建过程更加灵活和可扩展。 以下是一个简单的示例代码: 1. 定义建造者类 ``` class Builder { constructor() { this.product = {} } buildPartA() {} buildPartB() {} getResult() { return this.product } } ``` 2. 定义具体建造者类 ``` class ConcreteBuilder extends Builder { constructor() { super() } buildPartA() { this.product.partA = 'part A' } buildPartB() { this.product.partB = 'part B' } } ``` 3. 定义产品类 ``` class Product { constructor() { this.partA = '' this.partB = '' } } ``` 4. 定义指挥者类 ``` class Director { constructor(builder) { this.builder = builder } construct() { this.builder.buildPartA() this.builder.buildPartB() return this.builder.getResult() } } ``` 5. 在微信小程序中使用 在 WXML 中定义一个按钮,当用户点击按钮时,创建指挥者实例并传入具体的建造者实例,然后调用 construct 方法获取产品。 ``` <!-- index.wxml --> <view class="container"> <button bindtap="buildProduct">Build Product</button> </view> ``` 在 JS 文件中,定义具体的建造者实例和指挥者实例,然后在按钮点击事件中调用指挥者的 construct 方法获取产品。 ``` // index.js const builder = new ConcreteBuilder() const director = new Director(builder) Page({ buildProduct() { const product = director.construct() console.log(product) } }) ``` 当用户点击按钮时,控制台会输出以下结果: ``` { partA: "part A", partB: "part B" } ``` 这就是一个简单的微信小程序实现建造者模式的示例代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值