ycc-engine
Version:
Mini and powerful canvas engine for creating App or Game.
168 lines (122 loc) • 4.36 kB
JavaScript
/**
* @file main.js
* @author xiaohei
* @date 2018/11/9
* @description main文件
*/
///////////////////////////// 全局变量
var ycc = null;
var stageW = 0;
var stageH = 0;
// 所有的图片资源
var images = null;
// 所以音频资源
var audios = null;
// 背景乐自动播放
var bgmAutoplay = false;
// 当前场景
var currentScene = null;
// loading窗
var loading = null;
// 物理引擎
var engine = null;
// 调试时间节点
var t1=0,t2=0,t3=0,t4=0,__log='自定义';
// 关卡列表
var levelList=['1_1','1_2','1_3'];
//////
createYcc();
loading = new Loading();
loadRes(function (imgs, musics) {
loading.hidden();
images=imgs;
audios=musics;
projectInit();
});
function createYcc() {
// 创建canvas
var canvas = document.createElement('canvas');
// iphone6的高宽
canvas.width=375;
canvas.height=667;
document.getElementById('canvas').appendChild(canvas);
// 初始化全局变量
ycc = new Ycc().bindCanvas(canvas);
stageW = ycc.getStageWidth();
stageH = ycc.getStageHeight();
ycc.debugger.addField('帧间隔',function () {return ycc.ticker.deltaTime;});
ycc.debugger.addField('总帧数',function () {return ycc.ticker.frameAllCount;});
ycc.debugger.addField('总UI数',function () {return currentScene&¤tScene.layer.uiCountRecursion;});
ycc.debugger.addField('画面位置',function () {return currentScene&¤tScene.layer.x;});
ycc.debugger.addField('渲染时间',function () {return t2-t1;});
ycc.debugger.addField('update时间',function () {return t3-t2;});
ycc.debugger.addField('debug时间',function () {return t4-t3;});
ycc.debugger.addField('自定义',function () {return __log;});
// ycc.debugger.showDebugPanel();
// 监听每帧、更新场景
ycc.ticker.addFrameListener(function () {
t1 = Date.now();
ycc.layerManager.reRenderAllLayerToStage();
t2 = Date.now();
// currentScene && currentScene.update && currentScene.update();
t3 = Date.now();
currentScene && currentScene.debug && currentScene.debug();
// window.onerror = function (e) { alert('系统错误!'+e); };
t4 = Date.now();
});
}
// 加载资源
function loadRes(cb){
ycc.loader.loadResOneByOne([
{name:"btn",url:"../images/btn.jpg"},
{name:"button",url:"../images/button.png"},
{name:"fight",url:"../images/fight.png"},
{name:"music",url:"../images/music.png"},
{name:"jump",url:"../images/jump.png"},
{name:"mario",url:"../images/mario-walk.png"},
{name:"girl",url:"../images/girl.png"},
{name:"mushroom",url:"../images/mushroom.png"},
{name:"wall",url:"../images/wall.png"},
{name:"wallSpecial01",url:"../images/wall-special-01.jpg"},
{name:"wallSpecial02",url:"../images/wall-special-02.png"},
{name:"marioFight",url:"../images/mario-fight.png"},
{name:"marioJump",url:"../images/mario-jump.png"},
{name:"marioDown",url:"../images/mario-down.png"},
{name:"coin100",url:"../images/coin100.jpg"},
{name:"bucket",url:"../images/bucket.png"},
{name:"flag",url:"../images/flag.png"},
{name:"marioTouchFlag",url:"../images/mario-touch-flag.png"},
{name:"missile",url:"../images/missile.png"},
{name:"bg01",url:"../images/bg01.jpg"},
{name:"bg02",url:"../images/bg02.jpg"},
{name:"bg03",url:"../images/bg03.jpg"},
{name:"bg04",url:"../images/bg04.jpg"},
{name:"bg05",url:"../images/bg05.jpg"},
],function (lise,imgs) {
ycc.loader.loadResOneByOne([
{name:"bgm",type:"audio",url:"../audios/bgm.mp3"},
{name:"jump",type:"audio",url:"../audios/jump.mp3"},
{name:"victory",type:"audio",url:"../audios/victory.mp3"},
{name:"touchWall",type:"audio",url:"../audios/touchWall.mp3"},
{name:"touchCoin",type:"audio",url:"../audios/touchCoin.mp3"},
{name:"touchMushroom",type:"audio",url:"../audios/touchMushroom.mp3"},
{name:"dead1",type:"audio",url:"../audios/dead1.mp3"},
{name:"dead2",type:"audio",url:"../audios/dead2.mp3"},
],function (lise,musics) {
cb(imgs,musics);
},function (item,error) {
loading.updateText(item.name);
});
},function (item,error) {
loading.updateText(item.name);
});
}
function projectInit() {
ycc.ticker.start(60);
engine = Matter.Engine.create();
// Matter.Engine.run(engine);
currentScene = new GameScene();
ycc.layerManager.reRenderAllLayerToStage();
// 初始化工程后执行一次UI渲染队列
execUISequence();
}