摘要:入口文件整個微信小游戲?qū)嶋H上是運行在微信框架中一個原生中,沒有瀏覽器頁面環(huán)境如這就是為什么有一個模擬瀏覽器環(huán)境的適配器,啟動時小游戲框架運行,然后在中基本上都是對微信小游戲的調(diào)用及原生的操作了。
了解微信小游戲
官方文檔有詳細的介紹
小游戲的文件結(jié)構(gòu) 我們以新建一個官方示例說明如圖 最外層除了readme外 有3個文件
game.js 程序入口
game.json小游戲配置文件
project.config.json 項目設(shè)置文件
具體配置可以查看官方文檔,只有這幾個文件需要按照文件名格式來寫,其他文件的內(nèi)容和
這個文件是官方示例中用于模擬瀏覽器環(huán)境的適配器,如有需要可以自己寫,我們這里沿用這個。
入口文件 game.js
import "./js/libs/weapp-adapter" import "./js/libs/symbol" import Main from "./js/main" new Main()
整個微信小游戲?qū)嶋H上是運行在微信框架中一個原生canvas中,沒有瀏覽器頁面環(huán)境如document(這就是為什么有一個模擬瀏覽器環(huán)境的適配器),啟動時小游戲框架運行g(shù)ame.js,然后在main.js中基本上都是對微信小游戲api的調(diào)用及原生canvas的操作了。如果之前使用過原生canvas或者其他canvas庫的同學(xué) 馬上就可以上手開發(fā)0成本,官方開發(fā)工具也有es6=》es5的轉(zhuǎn)換所以如果項目比較小都不用其他東西,直接文本編輯器修改 保存 查看 即可。
開工音頻使用原來的代碼
幀定時也使用wx的回調(diào)函數(shù)
window.requestAnimationFrame( this.TimerHandel.bind(this), canvas )
引入一個canvas2d庫createjs中的ease 和一個自己寫的工具庫
import "./js/libs/weapp-adapter" import "./js/libs/ease" import "./js/plugin/Math" import Main from "./js/main" window.main = new Main();
保留原來的觸摸移動飛機并且新增重力感應(yīng)移動飛機
this.initEvent(); wx.startAccelerometer({ success:()=>{console.log("開始監(jiān)聽加速計")}}); wx.onAccelerometerChange((res)=>{ this.player.speedx = Math.floor(res.x*100)/10; this.player.speedy = Math.floor(-res.y * 100)/10; })
其他全部刪除 基于create.js庫重寫;所有子彈繼承一個父類
export default class Bullet_Super { constructor(cantiner, SHOOT_FRAME = 10,sprite_sheet) { this.cantiner = cantiner; this.shoot_frame = SHOOT_FRAME; this.list = []; this.deletelist = []; this.y = 0; this.x = 0; this.spriteSheet = new createjs.SpriteSheet(sprite_sheet); } outOfScreen(s, test) { if (test) { if (s.y > window.innerHeight + 100 || s.x > window.innerWidth + 100 || s.x < -100) { this.deletelist.push(s); s.visible = false; return false; } } return true; } createSprite(anime, option, die_option) { let isnew = true; let sprite = this.deletelist.length > 0 ? (isnew = false, this.deletelist.shift()) : new createjs.Sprite(this.spriteSheet, anime); sprite.isdie = false; sprite.dieing_frame=0; sprite.diecount = 0; Object.assign(sprite, option); sprite.die = sprite.die || (() => { sprite.isdie = true; Object.assign(sprite, die_option); }); !isnew ? (sprite.visible = true, sprite.gotoAndPlay(anime)) : this.cantiner.addChild(sprite); this.list.push(sprite); } update(timeFunc, dieFunc, diedFunc, test) { this.list = this.list.filter((s) => { if (s.isdie) { s.diecount++; dieFunc(s); if (s.diecount > (s.dieing_frame)) { diedFunc(s); this.deletelist.push(s); s.visible = false; return false; } return true; } timeFunc(s); return this.outOfScreen(s, test); }); } }
之后就是實現(xiàn)各種彈幕,計分顯示等
具體移步github https://github.com/lichffffd/we...
b站演示https://www.bilibili.com/vide...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/107311.html
摘要:于是準(zhǔn)備在這里總結(jié)下用開發(fā)游戲的經(jīng)驗,大致講一下這個游戲是怎么開發(fā)出來的,代碼比較長就不貼在這里了。為本游戲的證物系統(tǒng),管理證物的顯示,指證等。 概述 大約兩年前接觸了python,然后就愛上了這個語言。然后就想用它寫游戲,很快就找到了pygame這個庫,但是pygame貌似十分冷門,網(wǎng)上教程也比較少,好在還有個文檔來參考。于是胡亂搞了很久,前后搞了彈幕射擊類(模擬東方project系...
摘要:手把手教你做個人火的時候,隨便一個都能賺的盆滿缽滿,但是,個人沒有服務(wù)端,沒有美工,似乎就不能開發(fā)了,真的是這樣的嗎秘密花園經(jīng)典的中文手冊。涵蓋前端知識體系知識結(jié)構(gòu)圖書推薦以及入門視頻教程,全的簡直不要不要的了。 JavaScript 實現(xiàn)點擊按鈕復(fù)制指定區(qū)域文本 html5 的 webAPI 接口可以很輕松的使用短短的幾行代碼就實現(xiàn)點擊按鈕復(fù)制區(qū)域文本的功能,不需要依賴 flash。...
閱讀 3494·2021-10-18 13:30
閱讀 2948·2021-10-09 09:44
閱讀 1969·2019-08-30 11:26
閱讀 2298·2019-08-29 13:17
閱讀 764·2019-08-29 12:17
閱讀 2251·2019-08-26 18:42
閱讀 477·2019-08-26 13:24
閱讀 2959·2019-08-26 11:39