CCAction
对于一个游戏来说,动作是非常重要的,好的动作可以使游戏的可玩性大大提高,在cocos2d引
擎中有一个动作类,CCAction是动作类的基类,动作是定义在节点(CCNode)上的,以节点为
目标,主要分为两类瞬时动作和延时动作
CCIntervalAction(延时动作)
Cocos2d提供的基本延时类动作都提供了ActionTo和ActionBy两种(七种) :
ActionTo是指动作结束的状态,也就是动作的终点。
ActionBy是指动作执行的状态,也就是动作的执行过程。
常用的延时动作类包括:
移动动作:CCMoveBy CCMoveTo
缩放动作:CCScaleBy CCScaleTo
旋转动作:CCRotateBy CCRotateTo
跳跃动作:CCJumpBy CCJumpTo
贝赛尔曲线动作:CCBezierBy CCBezierTo
淡入淡出动作:CCFadeTo CCFadeIn CCFadeOut
移动(CCMoveBy与CCMoveTo)
创建对象:利用CCMoveBy(To).action(float duration, CGPoint pos) 。
参数说明: duration持续时间,pos代表目标点
不同点:
①CCMoveBy指定的CGPoint 是相对坐标即相对于当前的需要移动的精灵。 CCMoveTo指定CGPoint 是绝对坐标。
② CCMoveBy将reverse()方法进行了处理,而CCMoveTo返回null值。当我们需要实现精灵的反复移动时使用CCMoveBy将很轻松的完成。
应用场景:如游戏过关后会有一个箭头反复提示你前进的路线。首先我们需要使用CCSequence将一组移动的效果添加到一起,实现单次往返,
再利用CCRepeatForever实现反复动作。
示例代码:
private void moveBy() {
CCSprite sprite = getSprite();
// 参数1 移动的时间 单位秒 参数2 移动的目的地
CCMoveBy ccMoveBy=CCMoveBy.action(2, CCNode.ccp(400, 440));
CCMoveBy reverse = ccMoveBy.reverse();
CCSequence actions = CCSequence.actions(ccMoveBy, reverse);
sprite.runAction(actions);
}
private void moveTo() {
CCSprite sprite = getSprite();
// 参数1 移动的时间 单位秒 参数2 移动的目的地
CCMoveT
弹跳(CCJumpBy与CCJumpTo)
创建对象: CCJumpBy (To).action(float time, CGPoint pos, float height, int jumps)
参数说明: time代表持续时间, pos代表目标点, height代表回落高度,jumps代表跳动次数
区别: CCJumpBy将 reverse()方法进行了处理,可以用于实现重复动作;
private void jumpBy() {
CCSprite sprite = getSprite();
//参数1:时间 参数2:跳到的点 参数3:跳的最高点 参数4:跳的次数
CCJumpBy ccJumpBy=CCJumpBy.action(3, CCNode.ccp(300, 300), 500, 10);
CCJumpBy reverse = ccJumpBy.reverse();
CCSequence actions = CCSequence.actions(ccJumpBy, reverse);
sprite.runAction(actions);
}
缩放(CCScaleBy与CCScaleTo)
创建对象:CCScaleBy(To).action(float t, float s)
参数说明:t代表持续时间,s代表缩放比例
区别: CCScaleBy将 reverse()方法进行了处理,可以用于实现重复动作
应用场景:心跳
private void scaleBy() {
// 参数1 时间 参数2 缩放的比例
CCScaleBy ccScaleBy=CCScaleBy.action(1f, 1.65f); //基于锚点进行缩放
CCScaleBy reverse = ccScaleBy.reverse();
CCSequence sequence=CCSequence.actions(ccScaleBy, reverse);
CCRepeatForever forever=CCRepeatForever.action(sequence);//无限循环
getHeart().runAction(forever);
}
贝塞尔曲线运动(CCBezierBy)
创建对象:CCBezierBy(To).action(float t, CCBezierConfig c)
参数说明: t代表持续时间, c曲线参数, CCBezierConfig.controlPoint_1起始点、CCBezierConfig.controlPoint_2顶点、CCBezierConfig.endPosition终点
应用场景:子弹,pvz中屋顶关卡
private void bezierBy() {
CCBezierConfig c=new CCBezierConfig();
c.controlPoint_1=ccp(0, 0);
c.controlPoint_2=ccp(300, 300);
c.endPosition=ccp(500, 0);
CCBezierBy bezierBy=CCBezierBy.action(2, c);
getSprite().runAction(bezierBy);
}
渐快(CCEaseIn)
对象创建:CCEaseIn.action(CCIntervalAction action, float rate)
参数说明: action被控制的动作, rate加速度,如果为1就匀速了
渐慢:CCEaseOut与CCEaseIn参数一致,动作相反
private void ease() {
CCMoveTo ccMoveTo=CCMoveTo.action(10, CCNode.ccp(200, 0));
CCEaseIn easeOut=CCEaseIn.action(ccMoveTo,3); // 让移动按照有一定加速度去移动
getSprite().runAction(easeOut);
}
旋转(CCRotateBy与CCRotateTo)
创建对象:CCRotateBy(To).action(float t, float a)
参数说明:t代表持续时间,a代表旋转角度
区别:① CCScaleBy将 reverse()方法进行了处理,可以用于实现重复动作;② CCRotateTo以最便捷的方式旋转到指定角度,
如旋转角度为300时,使用CCRotateTo来实现的话会逆时针旋转60度
应用场景:进度条旋转、旗子的左右摆动等
特别注意:旋转动作是沿着锚点完成的,所以需要结合锚点统一协调旋转动作
颜色渐变动作(CCTintBy与CCTintTo)
创建对象: CCTintBy(To). action(float t, ccColor3B c)
参数说明:t:时间间隔, c:RGB三色值封装对象
区别:① CCTintBy对reverse()方法实现;② CCTintBy需要设置的RGB三色值是相对值,即相对于当前的RGB值进行变动。
应用场景
private void tint() {
// 专门显示文字的精灵
// 参数1 显示的内容 参数2 字体的样式 3 字体的大小
CCLabel label=CCLabel.labelWithString("夏浩轩 ,那些年在陌陌约到的妹子", "hkbd.ttf", 24);
label.setColor(ccc3(50, 0, 255));
label.setPosition(200,200);
this.addChild(label);
ccColor3B c=ccc3(100, 255, -100);
// 参数1 时间 参数2 变化后的颜色
CCTintBy by=CCTintBy.action(1, c);
CCTintBy reverse = by.reverse();
CCSequence actions = CCSequence.actions(by, reverse);
CCRepeatForever forever=CCRepeatForever.action(actions);
label.runAction(forever);
}
闪烁(CCBlink)
对象创建:CCBlink.action(float t, int b)
参数说明:t间隔时间,b闪烁次数
private void blink() {
// 三秒钟闪烁3次
CCBlink blink=CCBlink.action(3, 3);
getSprite().runAction(blink);
}
播放序列帧
CCAnimation加载
CCAnimate
如果要停止播放,可以采用stopAction
连续动作CCSequence
对象创建:CCSequence.actions(CCFiniteTimeAction action1, CCFiniteTimeAction... actions)
对象说明:用于按顺序执行一连串动作
并发动作CCSpawn
对象创建:CCSpawn.actions(CCFiniteTimeAction action1, CCFiniteTimeAction... params)
参数说明:指定一连串动作同时触发,如在跳跃过程中执行一个翻转动作。
间歇动作(CCDelayTime)
对象创建:CCDelayTime. action(float t)
参数说明:t 停止时间
即时动作(CCInstantAction)
瞬时动作:就是不需要时间,马上就完成的动作。
Cocos2d提供以下瞬时动作:
放置 – Place效果类似于 node.Position = ccp(x, y)。之所以作为一个动作来实现是为了可以与其他动作形成一个连续动作。
隐藏 – Hide效果类似于 [node setVisible:NO]. 之所以作为一个劢作来实现是为了可以与其他动作形成一个连续动作。
显示 – Show效果类似于 [node setVisible:YES]. 之所以作为一个动作来实现是为了可以与其他动作形成一个连续动作。
可见切换 – ToggleVisibility
可见性(CCHide与CCShow )
对象创建:调用action方法即可,无参数
无限动作CCRepeatForever
无限制的执行一个延时动作,通常用于连续执行一连串的重复动作,这些动作多放置在CCSequence中进行定义。
SoundEngine处理声音
声音类型:音乐和音效
可以从长短上来做区分,音乐一般用于游戏的背景声音,音效主要是短小的声音,如植物发射子弹,僵尸吃植物时发出的声音
声音控制,如播放、暂停、声音大小调节、静音
通过缓存音乐和音效文件来提高声音处理的效率
源码:http://download.csdn.net/detail/qq_27280457/9612812