1.節點
編輯組件的腳本文件時。可以通過以下語句獲得節點
this 就是當前組件
this.node
拿到組件依附的節點
This.node.parent
拿到組件依附的節點 的父節點
This.node.children
拿到組件依附的節點 的子節點
this.node.getChildByName(‘’)
通過名稱取得特定名的直系子節點
cc.removeSelf()
從節點樹刪除該節點 留在內存,但已經不在節點中 如果 args = true 則消失
跨直系引用節點
在properties 中聲明 node 對象再在編輯器中拖拽綁定
就可以在組建內部直接引用
兩個屬性
默認組件名樣式 name:節點<組件>
isValid 組件是否還在活動
2.動作
所有的動作 api 是由節點提供的,所以我們要先拿到節點
如 node.runAction()
1)動作運行:
runAction('action') 開始一個動作
stopAction(‘action’) 停止一個動作
stopAllAction() 停止該節點下的所有動作
2) 設置tag
action.setTag('tag_name')
node.getActionByTag('tag_name')
3)移動
cc.moveTo(1,20,20) 用 1s 以父節點錨點為坐標中心移動到(20,20)的位置
可以移動到一個點的相對位置,比如可以換成 cc.v2(100,100) 以c2為坐標的(100,100)
cc.rotateTo(1,50) 1s 第二個參數是角度
cc.moveBy() 相對移動
cc.scaleTo(1,2,2) 1s 放大到 2,2 scale
cc.fadeOut(1) 1s 消失
4)動作包裝
包裝為一個動作
cc.sequence(
動作1,
動作2
)
5)容器動作
順序動作:cc.sequence
可執行來回往復運動,如:
var seq = cc.sequence(cc.moveBy(0.5, 200, 0), cc.moveBy(0.5, -200, 0));
node.runAction(seq);//左右來回移動
同步動作:cc.spawn
可執行疊加系列動作,如:
 var spawn = cc.spawn(cc.moveBy(0.5, 0, 50), cc.scaleTo(0.5, 0.8, 1.4)); 
 node.runAction(spawn);//向上同時縮放
重復動作:cc.repeat
可執行重復一個動作,如:
var seq = cc.repeat( cc.sequence( cc.moveBy(2, 200, 0), cc.moveBy(2, -200, 0) ), 5); node.runAction(seq);//左右移動,重復5次
永遠重復動作:cc.repeatForever
可執行一直重復動作,如:
 
         var seq = cc.repeatForever( cc.sequence( cc.moveBy(2, 200, 0), cc.moveBy(2, -200, 0) ));//一直重復左右移動
改變速度:cc.speed
可執行改變速率,如:
 
        var action = cc.speed( cc.spawn( cc.moveBy(2, 0, 50), cc.scaleTo(2, 0.8, 1.4) ), 0.5); node.runAction(action);//速度加快一倍,2秒變1秒 
          
          
        
3.回調函數 callFunc
cc.callFunc(this.callBack, this, {'args':args}) 函數,對象,參數
callBack :function(targetNode, args){}
4.事件/交互內容
添加 Label 內置組件來添加名稱,方便於判斷
在操作過程中記得返回編輯器拖拽補充引用。
emit 和 on 配套 發射和監聽
This.node.emit(”事件“,{參數}); 發生“事件” 同時給出參數
this.node.on(”事件“,this.event1, this.node1) 發生了“事件”后 執行 event1 執行對象是這個 node
this.node.on(”事件“,this.event2,this.node2)
限制:(參數必須和 on 一致 )
this.node.once() 只監聽聽一次
this.node.off() 不再監聽 on
實例:
這里的 this 指的是 node1
-  
          event1: function(e){
 -  
          console.log(e.detail),
 -  
          this.runAction(cc.moveTo(1,200,0))
 -  
          },
 
5 觸摸事件 鼠標事件 鍵盤事件
This.node.on(‘touchStart’,this.onTouchStart, this) 開始觸摸
this.node.on(‘touchmove’,this.onTouchMove,this); 觸摸移動,持續觸發
this.node.on(‘touchEnd’,this.onTouchEnd, this) 觸摸停止
this.node.on(‘touchCancel’, this.onTouchCancel, this) 觸摸取消,(節點外釋放)
This.node.on(‘mouseup’,this.onMouseUp,this) 鼠標脫離
mouseDown onMouseDown 鼠標按下
mouseMove onMouseMove 鼠標移動(不一定要點擊)
mouseEnter onMouseEnter 鼠標進入節點區域
mouserLeave onMouseLeave 鼠標離開節點區域
mouseWheel onMouseWheel 鼠標滾輪
獲取點擊
getButton() 返回 0 1 2 對應 左中右
2)鍵盤事件
cc.systemEvent.on(type,callback,target)
返回一個 keycode
可選的 type 類型有:
- cc.SystemEvent.EventType.KEY_DOWN (鍵盤按下)
 - cc.SystemEvent.EventType.KEY_UP (鍵盤釋放)
 - cc.SystemEvent.EventType.DEVICEMOTION (設備重力傳感)
 
例如
cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this); 
        If e.keyCode == cc.KEY.w 當 keycode 是 w 時
cc.KEY.(按鍵)
3)獲取坐標
getLocation() 獲取全局坐標下的圓心
例子:
onTouchStart: function(e){
E.getLocation()
}
坐標轉換:從全局坐標系轉到本地坐標系
let locationOfThisNode = this.node.convertToNodeSpaceAR(e.getLocation()) AR 忽略錨點 this.node目標坐標系對應節點
讓某個節點的坐標更新
this.node.position = locationOfThisNode
