cocos2d-js 开发基础练习代码(1)——熟悉场景加载,精灵,动画使用等


cocos2d-js 开发基础练习代码(1)


个人入门练习敲代码例子:GameKernelScene.js 功能是加载个场景 layer界面随机添加些sprite从上往下掉落,超出屏幕则删除

代码涵盖内容包括:cocos2d-js场景的创建,layer的创建,sprite的创建,动画的使用,定时器的使用,以及JavaScript语法基础,对象的使用,方法的调用,数组Array的元素两种删除使用,Array添加自定义方法的方法,添加对象成员属性等。

新手一枚刚开始从c++转js,主要为了方便以后熟悉查阅,基本都是很基础的框架使用练习和js语法基础练习,看了一目了然,讲不出什么技术来,不懂欢迎评论交流

加载GameKernelScene.js方法,在入口cocos2d-js 工程下的main.js中添加启动代码:

 //load resources
 cc.LoaderScene.preload(images_res, function () {
     cc.director.runScene(new GameKernelScene());
 }, this);

下章练习敲:使用事件管理器创建用户交互以及cocos精灵帧动画的js使用


/* 添加Array自定义删除方法 */
Array.prototype.DeleteByIdx = function(n) {
    /* n表示索引第几项,索引从0开始计算 */
    /* prototype为对象原型,注意这里为对象增加自定义方法的方法,属于JavaScript语法 */

    if(n<0)
        return this;
    else
        return this.slice(0,n).concat(this.slice(n+1,this.length));

    /*  concat 方法:返回一个新数组,这个新数组是由两个或更多数组组合而成的。这里
        就是返回this.slice(0,n)+this.slice(n+1,this.length)组成的新数组,这中间,刚好
        去掉了被删除的第n项

        slice方法: 返回一个数组的一段,两个参数,分别指定开始和结束的位置。
    */
}

var GameKernelLayer = cc.Layer.extend({
    // members
    bgSprite:null,
    SushiSpritesMgr:null,
    ctor:function () {
        // 1. super init first
        this._super();

        // init vars 
        //不使用自定义删除方法的Array初始化
        //this.SushiSpritesMgr = [];

        //使用自定义删除方法的Array初始化
        this.SushiSpritesMgr = new Array();      

        // 2. add your contents

        var size = cc.winSize;

        // add btns
        var closeItem = new cc.MenuItemImage(
            images_res.CloseNormal_png,
            images_res.CloseSelected_png,
            function () {
                cc.log("Z.x: Menu is clicked!");
            },this);

        closeItem.attr({
            x:size.width - 20,
            y:20,
            anchorX:0.5,
            anchorY:0.5
        });

        var menu = new cc.Menu(closeItem);
        menu.x = 0;
        menu.y = 0;
        this.addChild(menu, 1);

        // add other codes below...
        // cocos label
        var helloLabel = new cc.LabelTTF("Hello World", "Arial", 38);
        // set position
        helloLabel.x = size.width / 2;
        helloLabel.y = 0;
        // add node
        this.addChild(helloLabel, 5);

        helloLabel.runAction(
            cc.spawn(
                cc.moveBy(2.5,cc.p(0, size.height - 40)),
                cc.tintTo(2.5, 255, 125, 0)
            )
        );

        // cocos sprite
        this.bgSprite = new cc.Sprite(images_res.GameKernel_Bg);
        this.bgSprite.attr({
            x: size.width / 2,
            y: size.height / 2,
            scale: 0.5,
            rotation: 180,
            anchorX: 0.5,
            anchorY: 0.5
        });
        this.addChild(this.bgSprite, 0);

        this.bgSprite.runAction(
            cc.sequence(
                cc.rotateTo(2, 0),
                cc.scaleTo(2, 1, 1)
            )
        );

        /* 启动定时器 */
        this.schedule(this.update,1,16*1024,1);

        return true;
    },

    addSushi: function() {

        var sushi = new cc.Sprite(images_res.GameFlyBody_Image);
        var size = cc.winSize;

        var posX = sushi.width/2 + size.width/2*cc.random0To1();

        sushi.attr({
            x: posX,
            y: size.height - 30
        });

        this .addChild(sushi, 5);
        this.SushiSpritesMgr.push(sushi);

        /* action */
        var dorpAction = cc.MoveTo.create(4,cc.p(sushi.x, -30));
        sushi.runAction(dorpAction);
    },

    removeSushi: function() {
        /* 移除到屏幕底部的sushi */
        for(var i = 0; i < this.SushiSpritesMgr.length; i++){
            cc.log("Z.x: remove Sushi......");
            if(0 >= this.SushiSpritesMgr[i].y){
                cc.log("Z.x: remove - "+i);
                this.SushiSpritesMgr[i].removeFromParent();
                this.SushiSpritesMgr[i] = undefined;

                //不使用自定义删除方法的Array初始化  对应上面初始化数组的语句
                //this.SushiSpritesMgr.splice(i,1);
                //i = i-1;

                //使用自定义删除方法的Array初始化
                this.SushiSpritesMgr = this.SushiSpritesMgr.DeleteByIdx(i);
            }
        }
    },

    update:function() {
        /* 添加一个掉落物体 放开则添加多个*/
        if(true/*0 == this.SushiSpritesMgr.length*/){
            this.addSushi();            
        }
      
        /* 检测掉落物体 是否超出屏幕之外 */
        this.removeSushi();
    }

});

var GameKernelScene = cc.Scene.extend({
    onEnter:function () {
        this._super();

        var layer = new GameKernelLayer();
        this.addChild(layer);
    }
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值