cocos2d-js项⽬全过程
命令
新建项⽬: cocos new -l js projectname
运⾏项⽬:cocos run -p web
项⽬打包:cocos compile -p web -m release
字典
Scene:场景,pushScene,加载或切换场景但不销毁上⼀个场景。popScene,销毁当前场景,回到上⼀个场景。
Director:导演,cc.director.runScene,这个函数⽤来加载或切换场景。WinSize():获取窗⼝尺⼨。VisibleSize(),获取窗⼝实际尺⼨。Scheduler(),获取全局定时器。pause/resume:暂停,恢复场景。
Node:节点
<pre >scheduleUpdate():通知当前节点</pre>
Layer:层
Sprite:精灵
cc:cc是⼀个JS对象,把各种cocos2d-js的原⽣类都封装到这个命名空间⾥,extend()函数接受⼀个对象作为参数。
addChild():增加⼦节点。
removeChild():移除⼦节点。box sizing
ctor:类的构造函数
_super():继承⽗类⽅法,调⽤⽗类同名函数。
anchor:锚点,anchorX和anchorY默认值都是0.5,锚点坐标原点位于左下⾓。
bind():bind⽅法返回⼀个新的function,这个function执⾏的时候this将固定指向bind的第⼀个参数。
其他
CCTransition.js记录了所有切换效果,第⼀个参数代表切换时间,单位S。
第四章
基本动作
moveTo和moveBy
moveTo(2,cc.p(100,100)):2代表2秒,后两个参数代表终点坐标。
moveBy()
缩放scaleTo和scaleBy
cc.scaleTo(1,2,4);1代表1秒,2代表横向⽐例,4代表纵向⽐例。缩放⽐例为负数是可以让精灵做⽔平/垂直翻转。scaleBy是在当前缩放⽐例基础上再乘以⼀个⽐例,⽽scaleTo是从原图尺⼨缩放。
淡⼊淡出fadeTo,fadeIn,fadeOut
fadeIn(2),fadeOut(2),2代表消失/出现时间。fadeTo(2.255)改变透明度,2代表时间,0-255代表透明度,255代表完全不透明。
闪烁blink
cc.blink(2,10)让精灵2秒钟闪烁10次。
改变颜⾊通道tintTo
cc.tintTo(2,100,0,0),时间,红通道,绿通道,蓝通道,就是让原来RGB颜⾊的数值乘以括号内的数值再除以255。
组合动作
1.顺序cc.sequence(action1,action2,…);
2.重复cc.repeat(action,times);第⼀个参数代表动作,第⼆个代表重复次数。
3.⽆限重复cc.repeatForover(action),让某个动作⽆线重复。
4.同时执⾏cc.spawn(action1,action2,…);
5.反向:cc.reverse(action);返回⼀个新动作。cc.reverseTime(action);只能处理有限长度的动作。
运动轨迹
action.easing(easeObject);easing⽅法,⽤来设置该动作执⾏过程中采⽤哪种缓动⽅式。参数在CCActionEase.js⾥。
控制动作
1.开始/停⽌动作
node.runAction(action);
node.stopActionByTag(tag);tag是预先设置给action的标记,例如action.tag = 123;
node.stopAllAction(action);
2.暂停/恢复动作
node.pause();
全局暂停:
cc.director.pause();
sume();
监听动作开始与结束:
var callback = cc.callFunc(function,target,data);
<pre >cc.sequence(action, callback);</pre>
第⼀个参数代表函数名,第⼆个参数代表函数最后被调⽤时的⽬标对象,第三个参数是附加的数据。
如果我们串联了多个动作,可以在每个动作之间都放置⼀个监听函数,
<pre >cc.sequence(action1, cc.callFunc(function1),action2, cc.callFunc(function2),action3);</pre>
播放声⾳
1.背景⾳乐
cc.audioEngine.playMusic("res/sounds/bg.mp3",true);第⼆个参数代表是否重复播放。
cc.audioEngine.stopMusic();停⽌播放
cc.audioEngine.setMusicVolume(0);静⾳,参数为1时恢复⾳量。
2.⾳效
cc.audioEngine.playEffect("res/sounds/bg.mp3",true);第⼆个参数代表是否重复播放。
cc.audioEngine.stopEffect(effect);停⽌播放
cc.audioEngine.stopAllEffects();关闭全部⾳效
cc.audioEngine.setEffectsVolume(0);静⾳,参数为1时恢复⾳量。
事件绑定
1.⿏标事件
<pre >if( 'mouse' in cc.sys.capabilities ) {
cc.eventManager.addListener({
event: cc.EventListener.MOUSE,
onMouseDown: function(event){
var pos = Location();
var target = CurrentTarget();
Button() === cc.EventMouse.BUTTON_RIGHT)
trace("onRightMouseDown at: " + pos.x + " " + pos.y );
else Button() === cc.EventMouse.BUTTON_LEFT)
trace("onLeftMouseDown at: " + pos.x + " " + pos.y );
},
onMouseMove: function(event){
var pos = Location(), target = CurrentTarget();
trace("onMouseMove at: " + pos.x + " " + pos.y );
},
onMouseUp: function(event){
var pos = Location(), target = CurrentTarget();
trace("onMouseUp at: " + pos.x + " " + pos.y );
}
}, this);
} else {
trace("MOUSE Not supported");
}</pre>
第⼀个参数代表监听信息,第⼆个代表监听的节点,'mouse' in cc.sys.capabilities ,判断运⾏环境。
event对象的⽅法:
Location();获取⿏标事件发⽣的坐标。
LocationX();LocationY();X/Y坐标。
CurrentTarget();获取触发事件的对象,就是node,
Button();判断⿏标左右键。
Delta();获取⿏标移动偏移值。
DeltaX();DeltaY();获取⿏标偏移的X值或Y值。
2.触摸事件
1.单点触摸
<pre style="box-sizing: border-box; outline: 0px; padding: 0px; margin: 0px 0px 24px; background-color: rgb(240, 240, 240); overflow-x: auto; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 14px; line-height: 22px; color: rgb(0, 0, 0); word-break: break-all; font-style: normal; font-va
riant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">if( 'touches' in cc.sys.capabilities ) {
cc.eventManager.addListener({
event: cc.EventListener.TOUCH_ONE_BY_ONE,
swallowTouches: true,
onTouchBegan: function(touch,event){},
onTouchMoved: function(touch,event){}, onTouchEnded: function(touch,event){}, onTouchCancelled: function(touch,event){} }, this);
} else {
trace("TOUCH-ONE-BY-ONE test is not supported on desktop");
}</pre>
touch参数封装了触摸事件专有的数据,onTouchEnded和onTouchCancelled可以等同处理。
touch参数有待查询API。
2.多点触摸
<pre >if( 'touches' in cc.sys.capabilities ) {
cc.eventManager.addListener({
event: cc.EventListener.TOUCH_ONE_BY_ONE,
swallowTouches: true,
onTouchBegan: function(event){},
onTouchMoved: function(event){},
onTouchEnded: function(event){},
onTouchCancelled: TouchCancelled
}, this);
} else {
trace("TOUCH-ONE-BY-ONE test is not supported on desktop");
}</pre>
touches参数是⼀个数组,每个数组元素
3.键盘事件
<pre >if( 'keyboard' in cc.sys.c
apabilities ) {
cc.eventManager.addListener({
event: cc.EventListener.KEYBOARD,
onKeyReleased: function(keyCode, event) {
if (keyCode == cc.KEY.back) {
cc.log("return button clicked. keycode:" + keyCode);
d();
}
else if (keyCode == u) {
cc.log("menu button clicked. keycode:" + keyCode);
}
}
}, this);
} else {
cc.log("KEYBOARD Not supported");
}</pre>
<pre >keyCode是⼀个数字,API在CCCommon.js⾥,</pre>
4.重⼒感应事件
<pre >if( 'accelerometer' in cc.sys.capabilities ) {

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。