開發(fā)技巧:批量添加組件&設(shè)置組件屬性

應(yīng)用情景

  • 場景中有大量節(jié)點需要添加某種組件见转。
  • 場景中有大量節(jié)點需要設(shè)置某種組件的屬性。
  • 將拖拽組件一個一個的手動附加到需要的節(jié)點上褥影,再一個一個設(shè)置這些屬性會非常繁瑣池户。

應(yīng)用舉例

場景中有大量節(jié)點需要添加拖拽組件(geoDraggable),

拖拽組件

并且還要把這些拖拽組件的lockTarget凡怎、dragMoveEvents校焦、dragEndEvents設(shè)置為相同的。

拖拽組件的屬性
  • 假設(shè)場景中已經(jīng)有一個節(jié)點refinedNode统倒,已經(jīng)附加了拖拽組件寨典,并且配置好了各項屬性。
  • 現(xiàn)在要為節(jié)點rawNode下的所有攜帶標記drag=a”的子孫節(jié)點添加拖拽組件房匆,并且將屬性:lockTarget耸成、dragMoveEvents、dragEndEvents浴鸿,設(shè)置為與refinedNode相同井氢。
  • 在游戲開始處(或需要的時候),使用下列代碼岳链,就能完成組件的附加和配置花竞,不用在編輯器中手動操作:
var Utils = require('geoUtils');
// 定義要獲取的組件
var Draggable = require('geoDraggable');
// 或者直接用組件類名(文件名)
var Draggable = 'geoDraggable';
// 獲得已配置好的組件
var refinedCom = refinedNode.getComponent(Draggable);
// 構(gòu)建要復(fù)制的屬性承載結(jié)構(gòu)
var attrs = Utils.obj.getAttrs(refinedCom, ['lockTarget', 'dragMoveEvents', 'dragEndEvents']);
// 為rawNode的子孫附加拖拽組件并設(shè)置屬性
Utils.node.setComponentAttrs(
  rawNode, // 以該節(jié)點為起點執(zhí)行操作
  Draggable, // 目標是拖拽組件
  attrs, // 要將拖拽組件的屬性依據(jù)attrs進行設(shè)置
  true, // 考慮(遍歷)rawNode到子孫節(jié)點
  'drag', // 只關(guān)注攜帶drag=a標記到節(jié)點
  'a', // 只關(guān)注攜帶drag=a標記到節(jié)點
  true // 若遍歷到的節(jié)點沒有Draggable組件就自動附加
);

方法詳解

  • 方法原型:
/**
 * 設(shè)置一個節(jié)點(或包含其子孫節(jié)點)某類組件的指定屬性值。
 */
setComponentAttrs(
  node, // 被設(shè)置的節(jié)點
  componentTypeOrName, // 目標組件類型或名稱
  attrs, // 要設(shè)置的組件屬性名及值
  includeHierarchy, // 是否考慮node子孫
  markNameInHierarchy, //列為考慮對象的子孫的標記名
  markValueInHierarchy, // 列為考慮對象的子孫的標記值
  addIfNotExists, // 若組件不存在是否自動添加, 
  validateFunc // 驗證是否對遍歷到到節(jié)點實施操作
)

延展閱讀

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掸哑,一起剝皮案震驚了整個濱河市约急,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌苗分,老刑警劉巖厌蔽,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異摔癣,居然都是意外死亡奴饮,警方通過查閱死者的電腦和手機纬向,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來戴卜,“玉大人罢猪,你說我怎么就攤上這事〔娲瘢” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵粘捎,是天一觀的道長薇缅。 經(jīng)常有香客問我,道長攒磨,這世上最難降的妖魔是什么泳桦? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮娩缰,結(jié)果婚禮上灸撰,老公的妹妹穿的比我還像新娘。我一直安慰自己拼坎,他們只是感情好浮毯,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泰鸡,像睡著了一般债蓝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盛龄,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天饰迹,我揣著相機與錄音,去河邊找鬼余舶。 笑死啊鸭,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的匿值。 我是一名探鬼主播赠制,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼千扔!你這毒婦竟也來了憎妙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤曲楚,失蹤者是張志新(化名)和其女友劉穎厘唾,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體龙誊,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡抚垃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鹤树。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡铣焊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出罕伯,到底是詐尸還是另有隱情曲伊,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布追他,位于F島的核電站坟募,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏邑狸。R本人自食惡果不足惜懈糯,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望单雾。 院中可真熱鬧赚哗,春花似錦、人聲如沸硅堆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽硬萍。三九已至扩所,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間朴乖,已是汗流浹背祖屏。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留买羞,地道東北人袁勺。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像畜普,于是被迫代替她去往敵國和親期丰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫吃挑、插件钝荡、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,109評論 4 62
  • 蹉跎之時逛犹,莫忘今日之狼狽 記得那年我在外租房子住端辱,本來房租到月底該到期了梁剔,我老想著房租到期時間還長著呢,所以舞蔽,衣服...
    如水_555e閱讀 847評論 1 0
  • 說了再見 才能頻頻回首 聽見招手 才能聞風(fēng)消瘦 有人低頭 有人溫柔 有人嫉妒神靈的丑陋 我拼了命想象 你眉宇間的張...
    草木風(fēng)沙閱讀 243評論 0 4
  • 2019“美國夢”中文征文比賽 尊敬的各同鄉(xiāng)會荣病,各商會: 為活躍美國中文文化,“楊磊工作室”從20...
    浪砂石閱讀 225評論 0 0
  • 因為參加武林書局組織的21天寫作活動渗柿,昨天才看到老師對大家提交的第一篇寫作的點評个盆,讓我大受震動。 首先朵栖,謝老師就提...
    天外來客人閱讀 358評論 0 0