- 与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)){
//如果两个对象有交集则执行此处程序
}