html5游戲之createjs以及“找不同”實踐


今天給大家介紹一款h5游戲的小框架,createjs,相信很多人都接觸過。先簡單介紹下createjs:CreateJS為CreateJS庫,可以說是一款為HTML5游戲開發的引擎。

CreateJS 中包含五款工具:
EaselJS:用於 Sprites、動畫、向量和位圖的繪制,創建 HTML5 Canvas 上的交互體驗(包含多點觸控),同時提供 Flash 中的“顯示列表”功能。
TweenJS:一個簡單的用於制作類似 Flash 中“補間動畫”的引擎,可生成數字或非數字的連續變化效果。
SoundJS:一個音頻播放引擎,能夠根據瀏覽器性能選擇音頻播放方式。將音頻文件作為模塊,可隨時加載和卸載。
PrloadJS:幫助你簡化網站資源預加載工作,無論加載內容是圖形、視頻、聲音、JS、數據……
PxLoadr
一款用於網站資源預加載的 JavaScript 庫,可加載圖片、音頻等任何類型的文件。PxLoader 除了可以幫你對資源加載的進度進行監測,捕捉“加載完成”事件外,還可以幫你指定資源加載的順序。你甚至還可以按照優先級分組加載資源。
那么今天我們主要講的就是easejs,並附送一款之前在微信朋友圈很火的"找不同",作為實戰演練。
首先介紹下游戲:
那么游戲很簡單拉,就是在一塊區域出現不同的顏色的圖塊,其中有一塊跟其他顏色不一樣,用戶點擊此則得一分並進入下一關。
那么游戲的思路並不難,我們用easejs來做好了,上代碼:
<!DOCTYPE  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html lang = "en" > 
<head><meta charset = "UTF-8" > 
<!--This text is a comment-->
<script src = "jquery-1.8.3.min.js"></script>
<script src="easeljs-0.7.1.min.js"></script>
<script src="rank.js"></script>
</head>
<body>
<canvas id="gameView" width="400px" height="400px;"> Your browser is not Support</canvas>
<div>時間:<span id="time">--</span></div><div>得分:<span id="int">--</span></div>
<script src="app.js"></script>
</body>
</html>

該代碼為html內容,其中引入easeljs模塊,直接引入就好。(在這里我們只引用了了easejs這個組件類庫,其實createjs功能很強大,本身是一款h5游戲引擎)

然后我們自己寫的js為兩塊,一個是app.js,另一個就是rank.js。其中rank.js為構造實例,即每一關圖塊所擁有的方法,我們均將其封裝在這個實例里面。app.js為具體執行的主線程js。

先上rank.js的代碼

function Rect(n,color){

createjs.Shape.call(this);//將createjs.Shape的方法全部當作參數傳進來

this.setRectType = function (type){//構造setRectType方法

 this._RectType = type;
 switch (type){
    case 1:
    this.setColor("#"+color[0]+color[1]+color[2]+color[3]+color[4]+color[5]);
    break;
    case 2:
    var m=1.9-n/9;
    this.setColor("#"+parseInt(color[0]/m)+parseInt(color[1]/m)+parseInt(color[2]/m)+parseInt(color[3]/m)+parseInt(color[4]/m)+parseInt(color[5]/m));
    break;
 }
}
    this.setColor = function(colorString){
        this.graphics.beginFill(colorString);
        this.graphics.drawRect(0,0,400/n-5,400/n-5);
        this.graphics.endFill();
    
    }
    this.getRectType = function (){
    return  this._RectType;
    }
    this.setRectType(1);
}
Rect.prototype = new createjs.Shape();//構建Rect對象,繼承所有createjs方法以及我們之前創建的方法

在rank.js代碼中,我們構建的所有實例應該擁有的方法,接下來在app.js中我們寫主線程:

var stage=new createjs.Stage("gameView");
createjs.Ticker.setFPS(30);
createjs.Ticker.addEventListener("tick",stage);
var gameView=new createjs.Container();
stage.addChild(gameView);
var n=2,num=1;
var timer = 16;
var time=$("#time");
function stop() {
    var ove = '<div style="9999px;height:9999px;z-index:99;opacity:0.6;background:#000;"></div>',
        over = '<div style="position:absolute;top:200px;left:200px;font-size:20px;height:500px;width:200px;z-index:999" id="over">時間到啦!!!!!!</div>';
    $("html").append(ove);
    $("html").append(over);

}
t = setInterval(function() {
    timer--;
    if(timer<0){
    stop();
    clearTimeout(t);
    }
    else {
    time.html(timer);
    }
}, 1000);

function addRect(){
    var cl=[parseInt(Math.random()*10),parseInt(Math.random()*10),parseInt(Math.random()*10),parseInt(Math.random()*10),parseInt(Math.random()*10),parseInt(Math.random()*10)];
    var color = cl;
    var x =parseInt(Math.random()*n);
    var y =parseInt(Math.random()*n);
    for(var indexX=0;indexX<n;indexX++){
        for(var indexY=0;indexY<n;indexY++){
        var r = new Rect(n,color);
        gameView.addChild(r);
        r.x=indexX;
        r.y=indexY;
        if(r.x == x&& r.y==y){
            r.setRectType(2);
        }
        r.x=indexX*(400/n);
        r.y=indexY*(400/n);
        if(r.getRectType() == 2 &&timer>=0){
        r.addEventListener("click",function(){
        if(n<7){++n;}
        gameView.removeAllChildren();
        $("#int").html(num++);
        addRect();
        });
        }
        }
        
        }
    }
addRect();

由於游戲簡單,app.js功能很好理解,主要作用為玩家選中目標方塊時,構建新圖層。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM