Celestia/Celx 指令碼/CELX Lua 方法/Celx celscript
外觀
在 CELX 指令碼中,可以從包含有效 CEL 指令碼的字串建立 “celscript” 物件。
“celscript” 物件可用於執行嵌入在 CELX 指令碼中的 CEL 指令碼。這可以透過將 CEL 指令碼以字串形式傳遞給 celestia:createcelscript() 方法來完成,從而建立一個 “celscript” 物件。如果字串不包含有效的 CEL 指令碼,此方法將導致錯誤。
本章列出了所有可用的 celscript 方法,這些方法可用於 “celscript” 物件。
boolean celscript:tick()
返回一個布林值,指示 “celscript” 物件中的 CEL 指令碼是否已終止。
- true,CEL 指令碼仍在執行。
- false,CEL 指令碼已終止。
備註
- LUA 支援使用雙括號的長字串語法,這在 اینجا很有用。利用這一點,你幾乎可以在所有情況下將完整的 CEL 指令碼直接複製貼上到 CELX 指令碼中,而無需修改。
- 在 CELX 指令碼中使用 CEL 指令碼部分時,按下 [空格鍵] 的 PAUSE 功能無法完全正常工作。雖然你正在觀看的場景將直接暫停,但 CEL 指令碼部分將在後臺繼續執行,導致當你再次按下 [空格鍵] 繼續指令碼時,部分指令碼會被視覺上跳過。
- 在 CELX 指令碼中重複使用 “celscript” 物件時,建議先在指令碼開頭定義以下函式,它可以在主指令碼中的不同位置使用
function CEL(source)
local script = celestia:createcelscript(source)
while script:tick() do
wait(0)
end
end
<... other CELX script code ...>
CEL([[{ string:cel }]])
<... other CELX script code ...>
示例
以下示例使用 CELX 指令碼中的 CEL 命令,讓土星環繞 12 秒。
function CEL(source)
local script = celestia:createcelscript(source)
while script:tick() do
wait(0)
end
end
--
CEL([[{
select { object "Sol/Saturn" }
center { }
goto { time 3 distance 8 up [ 0 1 0 ] upframe "equatorial" }
wait { duration 3 }
orbit { axis [ 0 1 0 ] rate 30 duration 12 }
}]])