cocosCreator節(jié)點常用API及常見問題

閱讀本文之前遥巴,默認你已經(jīng)掌握cocosCreator的基本知識姻锁。

關(guān)于節(jié)點

節(jié)點在cocosCreator中是非常重要的肮雨,所以它的相關(guān)API至關(guān)重要体斩。

  • 節(jié)點基本屬性
    width: 節(jié)點寬度梭稚。
    height: 節(jié)點高度。
    name: 節(jié)點名稱硕勿。
    color: 節(jié)點顏色哨毁。
    opacity: 節(jié)點透明度(0-255)。
    position: 節(jié)點在父節(jié)點坐標系中的位置源武。
    x: 節(jié)點 X 軸坐標(相當于父節(jié)點)扼褪。
    y: 節(jié)點 Y 軸坐標(相當于父節(jié)點)。
    anchorX: 節(jié)點 X 軸錨點位置(0-1之間)粱栖。
    anchorY: 節(jié)點 Y 軸錨點位置(0-1之間)话浇。
    rotation: 該節(jié)點旋轉(zhuǎn)角度。
    scale: 節(jié)點相對父節(jié)點的縮放闹究。
    zIndex: 決定一個節(jié)點在兄弟節(jié)點之間的位置幔崖。
    active: 當前節(jié)點的自身激活狀態(tài)。
    parent: 該節(jié)點的父節(jié)點渣淤。
    children: 節(jié)點的所有子節(jié)點赏寇。
    可以直接對屬性賦值從而改變屬性的值。
  • 節(jié)點基本方法
    getContentSize: 獲取節(jié)點原始大小价认,不受該節(jié)點是否被縮放或者旋轉(zhuǎn)的影響嗅定。
    setContentSize: 設(shè)置節(jié)點原始大小,不受該節(jié)點是否被縮放或者旋轉(zhuǎn)的影響用踩。
    getPosition: 獲取節(jié)點在父節(jié)點坐標系中的位置(x, y)渠退。
    setPosition: 設(shè)置節(jié)點在父節(jié)點坐標系中的位置。
    getScale: 獲取節(jié)點的縮放脐彩。
    setScale: 設(shè)置節(jié)點的縮放比例碎乃,默認值為 1.0。
    getRotation: 獲取該節(jié)點以局部坐標系 Z 軸為軸進行旋轉(zhuǎn)的角度惠奸。
    setRotation: 設(shè)置該節(jié)點以局部坐標系 Z 軸為軸進行旋轉(zhuǎn)的角度梅誓。
    getBoundingBox: 返回父節(jié)坐標系下的軸向?qū)R的包圍盒。
    getBoundingBoxToWorld: 返回節(jié)點在世界坐標系下的對齊軸向的包圍盒佛南。
    convertToWorldSpace: 將一個相對于節(jié)點左下角的坐標位置轉(zhuǎn)換到世界空間坐標系证九。
    convertToWorldSpaceAR: 將一個相對于節(jié)點錨點的坐標位置轉(zhuǎn)換到世界空間坐標系。
    convertToNodeSpace: 將一個點轉(zhuǎn)換到節(jié)點空間坐標系共虑,這個坐標系以節(jié)點左下角為原點愧怜。
    convertToNodeSpaceAR: 將一個點轉(zhuǎn)換到節(jié)點空間坐標系,這個坐標系以錨點為原點妈拌。
  • 節(jié)點操作查找相關(guān)方法
    getParent: 獲取該節(jié)點的父節(jié)點拥坛。
    setParent: 設(shè)置該節(jié)點的父節(jié)點蓬蝶。
    addChild: 添加子節(jié)點。
    insertChild: 插入子節(jié)點到指定位置猜惋。
    removeChild: 移除節(jié)點中指定的子節(jié)點丸氛。
    removeAllChild: 移除節(jié)點所有的子節(jié)點。
    removeFromParent: 從父節(jié)點中刪除該節(jié)點著摔。
    getChildByName: 通過名稱獲取節(jié)點的子節(jié)點缓窜。
    getComponent: 獲取節(jié)點上指定類型的組件。
    getComponents: 返回節(jié)點上指定類型的所有組件谍咆。
    addComponent: 向節(jié)點添加一個指定類型的組件類禾锤。
    removeComponent: 刪除節(jié)點上的指定組件。
  • 節(jié)點事件相關(guān)方法
    on: 在節(jié)點上注冊指定類型的回調(diào)函數(shù)摹察。
    once: 注冊節(jié)點的特定事件類型回調(diào)恩掷,回調(diào)會在第一時間被觸發(fā)后刪除自身。
    off: 刪除之前與同類型供嚎,回調(diào)黄娘,目標注冊的回調(diào)。
    targetOff: 移除目標上的所有注冊事件克滴。
    emit: 通過事件名發(fā)送自定義事件逼争。
    dispatchEvent: 分發(fā)事件到事件流中。
    pauseSystemEvents: 暫停當前節(jié)點上注冊的所有節(jié)點系統(tǒng)事件劝赔,節(jié)點系統(tǒng)事件包含觸摸和鼠標事件誓焦。
    resumeSystemEvents: 恢復(fù)當前節(jié)點上注冊的所有節(jié)點系統(tǒng)事件,節(jié)點系統(tǒng)事件包含觸摸和鼠標事件望忆。
  • 節(jié)點動作相關(guān)方法
    runAction: 執(zhí)行并返回該執(zhí)行的動作罩阵。
    stopAction: 停止并移除指定的動作竿秆。
    stopAllActions: 停止并且移除所有正在運行的動作列表启摄。
    pauseAllActions: 暫停本節(jié)點上所有正在運行的動作。
    resumeAllActions: 恢復(fù)運行本節(jié)點上所有暫停的動作幽钢。
  • 注意點
    • 節(jié)點的width歉备,height代表節(jié)點原始大小(與getContentSize方法的結(jié)果一樣)匪燕,不受節(jié)點縮放旋轉(zhuǎn)的影響蕾羊。
    • 節(jié)點旋轉(zhuǎn)后,自身的坐標系也會一起旋轉(zhuǎn)帽驯。所以一些轉(zhuǎn)換坐標的方法結(jié)果會有變化龟再。
    • 一個空節(jié)點設(shè)置顏色是無效的,可以給空節(jié)點添加Sprite渲染組件尼变。

關(guān)于事件

Cocos Creator 支持的系統(tǒng)事件包含鼠標利凑、觸摸浆劲、鍵盤、重力傳感四種哀澈。
鼠標和觸摸事件被稱為節(jié)點系統(tǒng)事件牌借,鍵盤和重力傳感事件被稱為全局系統(tǒng)事件。
值得注意的是無論你的鼠標和觸摸事件注冊在哪個層級的節(jié)點上割按,獲取到的位置坐標都是基于世界坐標系的
所以我們經(jīng)常需要將坐標統(tǒng)一轉(zhuǎn)換為世界坐標系進行相應(yīng)的計算膨报。

關(guān)于坐標系

Cocos Creator 的坐標系是笛卡爾右手系,即原點在左下角适荣,x 向右现柠,y 向上,z 向外束凑。

關(guān)于Graphics組件的坑

Graphics組件提供了一系列繪畫接口晒旅,和canvas的API差不多。但是在使用過程中還是有很多問題的汪诉,現(xiàn)就我遇到的問題簡單描述并給出解決方案废恋。

  • 問題一,1px劃的線條在不同分辨率設(shè)備上會出現(xiàn)粗細不均扒寄,甚至線條丟失問題鱼鼓?
    原因:我們的畫布會根據(jù)設(shè)備屏幕的實際分辨率并對場景中所有渲染元素進行適當?shù)目s放,所以1px的線條在縮小到足夠小的時候就會出現(xiàn)丟失問題该编。
    解決方案:確保在不同分辨率的設(shè)備上迄本,線條寬度永遠為1px。
    如果你的畫布是適配高度的話课竣,代碼如下:
    lineWidth = 1 /cc.view.getScaleY()
    如果你的畫布是適配寬度度的話嘉赎,代碼如下:
    lineWidth = 1 /cc.view.getScaleX()
    如果沒有開啟畫布的任何適配模式,代碼如下:
    lineWidth = 1 / Math.min(cc.view.getScaleX(), cc.view.getScaleY())
  • 問題二于樟,對節(jié)點進行放大縮小會出現(xiàn)粗細不均公条,甚至線條丟失問題?
    原因:同問題一迂曲。
    解決:每次放大或縮小都進行一次重繪靶橱,確保lineWidth和原來的保持一致。
    lineWidth = 1 / Math.min(cc.view.getScaleX(), cc.view.getScaleY()) / scaleRatio
    scaleRatio為放大或縮小的比例路捧。
    注意點:確保真實繪制的lineWidth乘以實際的縮放比例為整數(shù)关霸,即我們‘/’號之前為整數(shù),不然還是會出現(xiàn)丟失問題或粗細不均問題

資料

cocos-creator

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末杰扫,一起剝皮案震驚了整個濱河市队寇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌章姓,老刑警劉巖佳遣,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炭序,死亡現(xiàn)場離奇詭異,居然都是意外死亡苍日,警方通過查閱死者的電腦和手機惭聂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來相恃,“玉大人辜纲,你說我怎么就攤上這事±鼓停” “怎么了耕腾?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長杀糯。 經(jīng)常有香客問我扫俺,道長,這世上最難降的妖魔是什么固翰? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任狼纬,我火速辦了婚禮,結(jié)果婚禮上骂际,老公的妹妹穿的比我還像新娘疗琉。我一直安慰自己,他們只是感情好歉铝,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布盈简。 她就那樣靜靜地躺著,像睡著了一般太示。 火紅的嫁衣襯著肌膚如雪杭措。 梳的紋絲不亂的頭發(fā)上啦扬,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天平绩,我揣著相機與錄音文兢,去河邊找鬼。 笑死呀非,一個胖子當著我的面吹牛坚俗,可吹牛的內(nèi)容都是我干的镜盯。 我是一名探鬼主播岸裙,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼速缆!你這毒婦竟也來了降允?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤艺糜,失蹤者是張志新(化名)和其女友劉穎剧董,沒想到半個月后幢尚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡翅楼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年尉剩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毅臊。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡理茎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出管嬉,到底是詐尸還是另有隱情皂林,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布蚯撩,位于F島的核電站础倍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏胎挎。R本人自食惡果不足惜沟启,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望犹菇。 院中可真熱鬧美浦,春花似錦、人聲如沸项栏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沼沈。三九已至流酬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間列另,已是汗流浹背芽腾。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留页衙,地道東北人摊滔。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像店乐,于是被迫代替她去往敵國和親艰躺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容