cocos2d-js开发总结

  • 与Layer层相关
//创建Layer
var myLayer=cc.Layer.extend({
    ctor:function(){
        //ctor方法必须定义,是执行layer上所有程序的入口
    }
});
//如要设置Layer背景颜色必须继承cc.LayerColor而不是cc.Layer
var StartLayer = cc.LayerColor.extend({
     ctor:function () {
        this._super(); //继承父类的方法
        this.setColor(cc.color(255,255,255)); //设置背景颜色
        var size = cc.winSize; //获取屏幕的尺寸
        var bg=new cc.Sprite(res.bg);
        //定义了Sprite或其他对象,一定要执行addChild()方法,才能显示出来
        this.addChild(bg,0); 
     }
});
  • 与菜单相关
var startItem = new cc.MenuItemImage(
            res.startBtn,   //一般状态(图片)
            res.startBtn_N, //点击后状态(图片)
            function () {
                 cc.director.runScene(new PlayScene());
            }, this);
        startItem.attr({
            x: size.width/2,
            y: size.height/2-50,
        });
 var menu = new cc.Menu(startItem,gameShare,gameChange,gameRule,gameSelect,gameSound);
menu.x = 0;
menu.y = 0;
this.addChild(menu, 1);
  • 与文字标签LabelTTF相关
var gameName1= new cc.LabelTTF("SERIAL", "Arial", 40);
gameName1.fillStyle=cc.color(0,0,0); //设置字体颜色
gameName1.attr({
    x:size.width/2,
    y:size.height/2 + 120
});
this.addChild(gameName1, 10);

//对于label常用的方法是setString()
this.score++;
this.scoreTxt.setString("Score:"+this.score);
  • 与Sprite相关
//一般创建Sprite
var bgSprite = new cc.Sprite(res.background);
bgSprite.attr({
     x: size.width / 2,
     y: size.height / 2
});
this.addChild(bgSprite, 0);

//若要在去除Sprite或其他对象
mySprite.removeFromParent();

//自定义创建一个新的Sprite类
var paoSprite = cc.Sprite.extend({
    disappearAction:null,//消失动画
    onEnter:function () {
        this._super();
        this.addTouchEventListenser();
        this.disappearAction = this.createDisappearAction();//创建disappearAction
        this.disappearAction.retain(); //对生成的消失动画增加一次引用
    },

    onExit:function () {
        this.disappearAction.release();//释放对disapperaAction的引用
        this._super();
    },
    //添加动画帧
    createDisappearAction : function() {
        var frames = [];
        for (var i = 1; i < 12; i++) {
           var str = "pao_"+i+".png"; 
           var frame = cc.spriteFrameCache.getSpriteFrame(str);
           frames.push(frame);
        }

        var animation = new cc.Animation(frames, 0.01);
        var action = new cc.Animate(animation);

        return action; 
    },
    addTouchEventListenser:function(){
        this.touchListener = cc.EventListener.create({
            event: cc.EventListener.TOUCH_ONE_BY_ONE,
            swallowTouches: true,
            onTouchBegan: function (touch, event) { 
                var pos = touch.getLocation();
                var target=event.getCurrentTarget();
                var play=target.getParent(); //getParent()方法可返回target的父对象,一般为playLayer对象(特指执行游戏主程序的Layer层),通过play可访问playLayer中的方法和属性
                if(...){
                    return true; //返回true则可以往touchmove和touchend执行,否则停止执行
                }                   
                return false;
            },
            onTouchMoved:function(touch,event){

            },
            onTouchEnded:function(touch,event){

            }
        });
        cc.eventManager.addListener(this.touchListener,this); //为当前Sprite注册事件
    },
    removeTouchEventListenser:function(){
        cc.eventManager.removeListener(this.touchListener);
    }

});
var pao=new paoSprite(res.pao);

  • 与注册事件相关
    若事件只需注册在playLayer的某一个对象上,则将addTouchListener在创建Layer时定义;若事件需要注册在一批相同的Sprite内,则需自定义一个Sprite,将addTouchListener卸载Sprite的继承内。

  • 与转场动画相关
    普通:cc.director.runScene(newPlayScene());
    旋转出入:cc.director.runScene(new cc.TransitionRotoZoom(1, new PlayScene()));
    立体从左边缩小跳动进入:TransitionJumpZoom
    从左边移动进入右边:TransitionMoveInL
    从右边移动进入左边:TransitionMoveInR
    从上边移动到入下边:TransitionMoveInT
    从下边移动到入上边:TransitionMoveInB
    场景二弹出:TransitionShrinkGrow
    主窗口缩小,场景二入:TransitionZoomFlipAngular
    从中间渐变进入:TransitionFade
    从外围渐变进入:TransitionCrossFade
    小窗口逐渐变大:TransitionProgressInOut
    大窗口逐渐变小:TransitionProgressOutIn
    从左往右推出:TransitionProgressHorizontal
    从上往下推出:TransitionProgressVertical
    顺时针时钟效果:TransitionProgressRadialCW
    逆时针时钟效果:TransitionProgressRadialCCW

  • 与动作动画相关
dorpAction1=cc.MoveTo.create(0.5,cc.p(finalPos.x,finalPos.y); //第一个参数为动作的持续时间,第二个参数为目标坐标
this.ball.runAction(dorpAction1);

//构造一组顺序执行的动作序列
var seq = new cc.Sequence(act1, act2);
//当act动画执行完成后,调用一个回调函数来处理数据
var seqAc = cc.Sequence(act, cc.CallFunc(function () {
        target.getParent().addScore();
        target.removeFromParent();
},target));

//停止动画
target.stopAllActions();
  • 与自动循环执行函数相关
this.schedule(funcName,time); //time为延迟执行时间,在此处也为每次调用对应函数的间隔时间
this.schedule(function(){...},time);
this.scheduleOnce(funcName,time);  //只执行一次,time为延迟执行时间
this.unschedule(funcName); //解除循环执行,当前游戏结束时要解除所有的循环
  • 判断碰撞
//判断触屏点是否在注册事件对象的范围内
//getBoundingBox()返回的是对象(例){x:100,y:100,w:100,h:100}
var pos = touch.getLocation();
var target=event.getCurrentTarget();
if ( cc.rectContainsPoint(target.getBoundingBox(),pos)) {
       target.x=target.x-30;
       target.y=target.y+30;
       return true;
}

//判断两个Sprite是否碰撞
var fBox=curFood.getBoundingBox();
var hBox=myHead.getBoundingBox();
if(cc.rectIntersectsRect(fBox,hBox)){
    //如果两个对象有交集则执行此处程序
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值