您好,登錄后才能下訂單哦!
Cocos Creator開發(fā)遠(yuǎn)非初看起來(lái)那么容易,正早一些可視化開發(fā)語(yǔ)言,例如VB,入門很容易,但進(jìn)入實(shí)戰(zhàn)階段,你很可能會(huì)發(fā)現(xiàn)問(wèn)題一股腦兒出現(xiàn)。但是,不要怕,根本原因還在于你不熟悉它。其效率不必懷疑,而且官方的主打產(chǎn)品也正是它。開發(fā)中,深感官方關(guān)于Cocos Creator腳本執(zhí)行順序尚存在很多不詳細(xì)或者透徹的地方;因此,本人結(jié)合最近一個(gè)時(shí)段的學(xué)習(xí),作以下幾點(diǎn)補(bǔ)充。
地址是:http://docs.cocos.com/creator/manual/zh/scripting/execution-order.html
但是,其中提倡使用統(tǒng)一的控制腳本來(lái)初始化其他腳本這一部分尚有一些疑點(diǎn),例如官方給出的示例代碼是:
// Game.js
const Player = require('Player');
const Enemy = require('Enemy');
const Menu = require('Menu');
cc.Class({
extends: cc.Component,
properties: {
player: Player,
enemy: Enemy,
menu: Menu
},
onLoad: function () {
this.player.init();
this.enemy.init();
this.menu.init();
}
});
但是,當(dāng)三個(gè)腳本Player.js,Enemy.js和Menu.js分別掛載到一些UI組件上時(shí),這個(gè)Game.js本身掛載到哪里?只是簡(jiǎn)單地創(chuàng)建一個(gè)與最外層Canvas同級(jí)的空節(jié)點(diǎn)上并把它掛載到上面去嗎?通過(guò)我的試驗(yàn)分析,這是存在問(wèn)題的。
官方的結(jié)論是:
“在同一個(gè)節(jié)點(diǎn)上的組件腳本執(zhí)行順序,可以通過(guò)組件在 屬性檢查器 里的排列順序來(lái)控制。排列在上的組件會(huì)先于排列在下的組件執(zhí)行。我們可以通過(guò)組件右上角的齒輪按鈕里的 Move Up 和 Move Down 菜單來(lái)調(diào)整組件的排列順序和執(zhí)行順序。”
這個(gè)沒有什么可值得懷疑的,也很好理解。
若某節(jié)點(diǎn)是父節(jié)點(diǎn),其下有一個(gè)子節(jié)點(diǎn),且這父子節(jié)點(diǎn)都各自掛載一些腳本,則執(zhí)行順序是先執(zhí)行父節(jié)點(diǎn)上的腳本(可能有多個(gè)),再執(zhí)行子節(jié)點(diǎn)上的腳本。
此種情況下,按照自上而下的順序執(zhí)行各節(jié)點(diǎn)上掛載的腳本代碼。
若有如下所示的節(jié)點(diǎn)及腳本的掛載結(jié)構(gòu)圖:
Canvas1(本身掛載有S1.JS腳本)
其下有子節(jié)點(diǎn)BALL(此節(jié)點(diǎn)掛載有S11.JS腳本)
Game(本身掛載有S2.JS腳本)
其下有子節(jié)點(diǎn)PLATFORM(此節(jié)點(diǎn)掛載有S21.JS腳本)
于是,根據(jù)上面分析有下面的腳本執(zhí)行順序:
S1.JS S11.JS S2.JS S21.JS
例如腳本文件Physics-Settings.js:
console.info("I am here...");
let physicsManager = cc.director.getPhysicsManager();
physicsManager.enabled = true;
physicsManager.debugDrawFlags =
// 0;
// cc.PhysicsManager.DrawBits.e_aabbBit |
cc.PhysicsManager.DrawBits.e_jointBit |
cc.PhysicsManager.DrawBits.e_shapeBit
;
此腳本的加載非常之早,在所有軟件自定義腳本的開發(fā)之前加載,有下圖為證:
因此,由上圖可見,程序中所有腳本的加載順序?yàn)椋?/p>
Cocos2d 引擎
插件腳本(有多個(gè)的話按項(xiàng)目中的路徑字母順序依次加載)
普通腳本(打包后只有一個(gè)文件,內(nèi)部按 require 的依賴順序依次初始化)
Cocos Creator入門容易,深入掌握也不易,但隨著官方提供支持的不斷豐富,相信會(huì)進(jìn)一步簡(jiǎn)化我們的學(xué)習(xí)。有關(guān)JS腳本開發(fā)技術(shù),更是Cocos Creator開發(fā)中的重中之重,隨著對(duì)這個(gè)工具的不斷深入,需要我們也不斷深入掌握J(rèn)S開發(fā)技術(shù)。本文僅是本人近期一個(gè)BOX2D類小游戲開發(fā)過(guò)程中結(jié)合自己使用總結(jié)出的一點(diǎn)小體會(huì),不當(dāng)處還希望各位多多批評(píng)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。