createjs-打豆豆小游戏制作(3)

本文详细介绍了使用createjs创建打豆豆小游戏的Ball.js类和GameScene.js主要游戏场景。游戏包含十种颜色小球,点击正确位置实现消除并伴有动画效果。在GameScene.js中,游戏背景由30*15的方格构成,小球位置随机排列,监听点击事件判断得分,倒计时结束游戏结束。
摘要由CSDN通过智能技术生成

前面介绍过了打豆豆小游戏的入口和各个场景之间的切换,这一篇介绍一下Ball.js这个类和GameScene.js这个主要游戏场景这个类。

在游戏中有十种不同颜色的小球,当你点到正确的位置,小球就可以消除,在小球消除的时候有一个掉下来的动画。

下面是Ball.js的源码

(function(window){
   
    //Ball这个类继承自Container类,接受一个color参数,表示这个小球是什么颜色
    function Ball(color)
    {
   
        this.Container_constructor();
        //小球的颜色
        this.color=color;
        //tick时间的侦听器,这个变量用于在off的时候移除侦听时间
        this.tickListener;
        //小球下落时候的x方向的速度
        this.speedX;
        //小球下落时候的y方向的速度
        this.speedY;
        //小球下落的加速度
        this.speedA=4;
        //根据color这个变量的值,从单列类中的resource中获取到之前加载好的图片,然后创建bitmap对象
        this.gd=new GlobalData();
        var ball=new createjs.Bitmap(this.gd.resource.getResult("image"+color));
        //图片本身比较大,这里做了一下缩小
        ball.scaleX=0.5;
        ball.scaleY=0.5;
        this.addChild(ball);
    }

    var p=createjs.extend(Ball,createjs.Container);

    //小球开始掉落的函数
    p.beginFall=function()
    {
   
        //添加tick事件侦听,tick事件大概相当于flash中enterFrame事件,在每次舞台更新的时候触发
        this.tickListener=this.on("tick",this.fall,this);
        //设置小球的速度
        this.speedX=-5+10*Math.random();
        this.speedY=-20;
    };

    //在每次tick事件时调用,更新小球的位置,达到小球掉落的效果
    p.fall=function(e)
    {
   
        this.x+=this.speedX;
        this.y+=this.speedY;
        this.speedY+=this.speedA;
        //在检查到小球掉出舞台以后,移除小球,并且移除侦听的事件(用on方法添加的侦听时间,只能用off方法来移除侦听
        if(this.y>this.gd.canvas.height+50)
        {
            if(this.parent!=null)
            {
                this.parent.removeChild(this);
                this.off("tick",this.tickListener);
            }
        }
    };

    window.Ball=createjs.promote(Ball,"Container");
}(window));

接下来就是主要的游戏场景,里面包括游戏部分、倒计时条、得分和返回按钮四个部分。

1.首先用Shape类画出了一个30*15的方格背景,如下图

2.记录方格的位置,然后随机排列位置数组,然后在数组的前200个位置上放置小球,这样就做到了小球随机排列的效果(这里没有用数组自带的sort方法,因为自带的方法有bug,而且效率低)

3.侦听点击事件,根据点击事件的坐标,判断点击到了哪个方格上,如果是空白方格就检测方格所在的十字是否有同颜色的小球,如果有的话就调用小球掉落的方法,并且更新分数和播放音效。如果点错了就播放错误的音效,然后扣掉一定的时间

4.倒计时结束后游戏就结束了,看上去游戏很简单,很无聊,但是想要得到200分相当不容易

下面是GameScene.js的源码

(function(window){
    function GameScene()
    {
        //继承自Container类
        this.Container_constructor();
        this.squareNumArray<
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值