3 先學(xué)放個(gè)幻燈片!「Artemis教程全站首發(fā)」
在上一期教程,我們配置了設(shè)置文件,現(xiàn)在啟動(dòng)Artemis.exe不會(huì)報(bào)錯(cuò)了,但是后續(xù)操作要在腳本文件里完成。 我們已經(jīng)在游戲根目錄下創(chuàng)建好了main.iet,現(xiàn)在用文本編輯器打開它。
Artemis使用KAG語(yǔ)言(類似krkr的標(biāo)簽語(yǔ)言),我們先來(lái)學(xué)習(xí): 1、語(yǔ)法
(1)標(biāo)簽tag
Artemis使用的是KAG標(biāo)簽語(yǔ)言,標(biāo)簽是它的主要代碼。學(xué)過(guò)HTML的人應(yīng)該知道標(biāo)簽語(yǔ)言,這是一種“有頭有尾”的語(yǔ)言。 在KAG語(yǔ)言中,頭是英文方括號(hào)“[”,尾是英文方括號(hào)“]”,標(biāo)簽內(nèi)寫入標(biāo)簽名tag、參數(shù)名和參數(shù)值。 請(qǐng)見(jiàn)例子: [
flip
]
[
debugprint
level
="
3
"
data
="
你好
"]
這是兩行KAG語(yǔ)言的代碼。 第一行的
flip
標(biāo)簽沒(méi)有要求參數(shù),所以只要寫tag名。 第二行
debugprint
要求
兩個(gè)參數(shù),第一個(gè)參數(shù)
名
為
level
的
值
是
3
,第二個(gè)參數(shù)名為
data
值為"
你好
"。
注意:所有的參數(shù)值都是
字符串
,都需要用英文雙引號(hào)包裹。(強(qiáng)烈建議加上,雖然程序會(huì)自動(dòng)補(bǔ)全。參見(jiàn)稍后發(fā)布的「偷懶」專題)然而標(biāo)簽名和參數(shù)名不要加引號(hào)。標(biāo)簽名和第一個(gè)參數(shù)名、兩個(gè)參數(shù)之間要空格來(lái)分開。 有時(shí)候標(biāo)簽比較長(zhǎng),一行擠不下怎么辦? 也可以豎著寫。比如: [
font
left
="
0
"
top
="
0
"
width
="
640
"
height
="
480
"
face
="
微軟雅黑
"
rubyface
="
微軟雅黑 Light
"
size
="
24
"
shadow
="
0
"
outline
="
0
"
rubysize
="
8
"
rubyshadow
="
0
"
rubyoutline
="
0
"
spacetop
="
0
"
spacemiddle
="
0
"
spacebottom
="
0
"
kerning
="
0
"
rubykerning
="
0
"
align
="
left
"
style
=""
vertical
="
0
"
hung
="
1
"
color
="
FFFFFF
"
shadowcolor
="
000000
"
outlinecolor
="
000000
"
alpha
="
255
"
xscale
="
100
"
yscale
=
100
"
rotate
="
0
"
layermode
="
normal
"
entirealpha
="
255
"
entirexscale
="
100
"
entireyscale
="
100
"
entirerotate
="
0
"
entireanchorx
="
0
"
entireanchory
="
0
"
anchorcenter
="
1
"
overflow
="
0
"
]
豎著寫時(shí),為了美觀,每個(gè)參數(shù)名前面建議用
四個(gè)空格
或者一個(gè)tab來(lái)區(qū)分。 (2)注釋
Artemis最大的特點(diǎn)就是“你可以做任何事情,但你必須自己
從頭
開始構(gòu)建它”。 —— 學(xué)習(xí)Artemis的日本網(wǎng)友:蘭皮 用Artemis從頭構(gòu)建的話,制作游戲是一個(gè)耗時(shí)的工作。所以當(dāng)你寫了幾行代碼,隔了幾天再看時(shí),你大概
不會(huì)愿意
花時(shí)間一字一句重新理解你寫的代碼。這種情況下,注釋可以幫到你。 注釋里面可以寫任何東西,建議大家用自然語(yǔ)言描述運(yùn)行的代碼的目的。 注釋的方式和C++相同,有兩種,分為單行注釋和多行注釋。 單行注釋后面的字符不會(huì)執(zhí)行
// 我是一行注釋。
多行注釋內(nèi)部的字符不會(huì)執(zhí)行:
/*一行注釋。。。。。。。。。
兩行注釋 我是注釋 注釋啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
三行注釋。。我在里面哦哦哦哦哦哦哦哦*/
兩種注釋都可以尾隨在代碼語(yǔ)句后面。如: [
flip
]
// 刷新顯示
[
flip
]
/* 刷新顯示 */
多行注釋可以插入在代碼內(nèi)部(可能比較亂),如:
[
dialog
title
/*標(biāo)題*/
="
Hello
"
/*消息*/
message
="
World
"]
但是注意多行注釋
不要截?cái)?/p>
標(biāo)簽名稱或參數(shù)名稱,插入到參數(shù)值會(huì)被當(dāng)作參數(shù)值而不是注釋。(多行注釋甚至可以代替空格來(lái)分開參數(shù))
實(shí)操 1
在main.iet中: 寫一行
單行注釋
,內(nèi)容是現(xiàn)在的日期和時(shí)間。
寫一個(gè)標(biāo)簽,標(biāo)簽名稱為
debug
,第一個(gè)參數(shù)叫
mode
,值為
"2"
,第二個(gè)參數(shù)名為
level
,值為
"3"
。
寫一個(gè)標(biāo)簽,名稱為
dialog
,第一個(gè)參數(shù)為
title
,值為 "
你好
",第二個(gè)參數(shù)為
message
,值為"
測(cè)試
"。
保存腳本,運(yùn)行Artemis.exe 最終效果是:彈出標(biāo)題為“你好”的對(duì)話窗口,消息內(nèi)容為“測(cè)試”。 // 實(shí)操示例代碼在本篇末尾。
2、放個(gè)幻燈片
(1)圖層創(chuàng)建、圖層的特性、圖層刪除
俗話說(shuō)得好,要學(xué)會(huì)走先學(xué)會(huì)爬。在構(gòu)建復(fù)雜的游戲之前,我們先實(shí)現(xiàn)一個(gè)基本功能: 放幻燈片! 先熟悉Artemis的繪圖結(jié)構(gòu)。 像繪畫軟件一樣,基本的繪圖單位是圖層(layer)。 每個(gè)圖層都必須有自己的名字
id
,重名的現(xiàn)象不被允許。建議使用數(shù)字作圖層名字,如
"0" "1" "2"
。當(dāng)然不用也不是不行,如
"背景" "舞臺(tái)" "前景"
。 圖層可以顯示純色
或
圖片。(下文1、2) 創(chuàng)建兩種圖層請(qǐng)使用標(biāo)簽
lyc
1、純色圖層必須指定 圖層序號(hào)
id
、顏色
color
、寬
width
、高
height
參數(shù)。 [
lyc
id
="
0
"
color
="
66CCFF
"
width
="
1920
"
height
="
1080
"]
其中,
lyc
意為layer create(創(chuàng)建圖層),該語(yǔ)句創(chuàng)建了一個(gè)序號(hào)為0,顏色為天依藍(lán),寬1920高1080的純色圖層 顏色color要求16進(jìn)制RGB或者ARGB格式。16進(jìn)制數(shù)大寫小寫都支持,為了美觀請(qǐng)使用大寫。 2、圖片圖層必須在
file
參數(shù)指定圖片的相對(duì)路徑,使用左斜杠“
/
”。推薦的圖片格式有png、jpeg或jpg、一部分psd(會(huì)自動(dòng)合并圖層) [
lyc
id
="
2
"
file
="
image/bg.png
"
mask
="
mask.png
"]
其中有個(gè)上面沒(méi)有提到的參數(shù)
mask
,是
可選參數(shù)
,是遮罩層圖片。使用
mask
可以達(dá)到在圖層上鏤空和半透明的效果。注意:遮罩層圖片大小必須與圖層大小一致,要求8位(256色)灰度圖片(可以在線轉(zhuǎn)換或者使用xnview軟件轉(zhuǎn)換)。 需要了解的還有
圖層的特性
:
有透明度
:圖層可以出現(xiàn)鏤空,也可以像染色玻璃一樣透出下面的東西。(圖層上的圖片、圖層填色的Alpha值、人工設(shè)置的圖層屬性可以影響透明度)但是模糊等特效需要手動(dòng)p圖。
相互重疊
:像蓋被子一樣,你可以蓋一床也可以蓋許多床,你可以蓋大被子也可以蓋小被子也可以一起蓋,你甚至可以把被子蹬開蹬掉床。注意,同級(jí)序號(hào)大的圖層會(huì)在更上方,級(jí)別更大的圖層在更上方(父與子圖層,下面有介紹)
圖層是矩形的
:矩形就是長(zhǎng)方形,不論是大被子還是小被子都得是長(zhǎng)方形的。但是你可以通過(guò)鏤空的方式間接使它奇形怪狀(把被子剪成圓形?)。
大小角度可以變換
:圖層默認(rèn)位置左上角對(duì)齊且不旋轉(zhuǎn)。在自己家里睡覺(jué),蓋被子隨意一點(diǎn)。(像攤煎餅一樣轉(zhuǎn)被子?)
圖層數(shù)量受機(jī)器性能限制
:柔弱的人承受不了太多層被子,同理,羸弱的電腦承受不了太多的圖層。
圖層分“父”與“子”
:這是重點(diǎn)。一個(gè)父圖層可以有許多子圖層,子圖層的名字寫在父圖層和英文句號(hào)后面,如
"0.0" "0.1" "0.2" "背景.星星" "舞臺(tái).燈光" "前景.人物"
。父圖層不一定有圖像顯示,可以只作為圖層分組依據(jù)。
子圖層的所有屬性都是以父圖層為基礎(chǔ)的,是相對(duì)于父圖層而言的,可謂是“青出于藍(lán)而勝于藍(lán)”。
父圖層及其所有的子圖層組成
圖層組
,圖層組的名字是父圖層的名字(如"0" "1" "2")
父圖層屬性的變化會(huì)影響該圖層組的屬性,子圖層屬性也隨之變化。打個(gè)比方:床上有幾床被子。床就是父圖層,被子就是子圖層。你挪床,被子也跟著移動(dòng)。
有個(gè)特例:被子太大床鋪不下時(shí),多出的被子雖然會(huì)掉下床,但是仍然可見(jiàn),也就是說(shuō)父圖層對(duì)子圖層的控制力有限(孩子青春期叛逆)。
注:直接創(chuàng)建子圖層時(shí),父圖層會(huì)自動(dòng)存在。如創(chuàng)建子圖層0.0后,父圖層0就已經(jīng)存在。
一張圖幫助理解(羸弱繪圖:Redroadsl)
官方的建議:0圖層用來(lái)顯示鋪滿屏幕的背景。 物有本末,事有終始,創(chuàng)建一個(gè)圖層也可以刪除一個(gè)圖層。使用
lydel
標(biāo)簽刪除一個(gè)圖層。 [
lydel
id
="
1
"]
lydel
意為layer delete刪除圖層,只需輸入圖層id即可刪除該圖層。注意:刪除一個(gè)父圖層會(huì)刪除其圖層組的所有圖層。即刪除1圖層會(huì)接連刪除1.1、1.2、1.3... // 多余的圖層會(huì)占用運(yùn)行內(nèi)存,使程序運(yùn)行卡頓。請(qǐng)及時(shí)清理用不到的圖層。 (2)刷新顯示
上面所有對(duì)圖層的操作都是在幕后完成的,要把最終結(jié)果呈現(xiàn)出來(lái),我們需要刷新顯示。最簡(jiǎn)單的刷新顯示的方法是使用
flip
標(biāo)簽,無(wú)參數(shù)要求。如下: [
flip
]
就這么簡(jiǎn)單。 但事實(shí)上非常容易忘記刷新顯示。 (3)等待響應(yīng)
飛快自動(dòng)播放的幻燈片不是給人看的。我們需要讓它等待我們的動(dòng)作來(lái)翻頁(yè)。 這也很簡(jiǎn)單,只需在需要等待的地方寫一個(gè)@就行。如下:
@
// 用戶觸發(fā)響應(yīng)的方法為按動(dòng)鼠標(biāo)或按下鍵盤。
/* 小知識(shí):
@
其實(shí)是個(gè)標(biāo)簽的簡(jiǎn)寫,正式寫法為[
@
]。 更多請(qǐng)參見(jiàn)「偷懶」專題(稍后發(fā)布)*/
實(shí)操 2
在main.iet中(可以接著上面實(shí)操的代碼繼續(xù)寫): 創(chuàng)建一個(gè)圖層,序號(hào)為"0.0",純色,顏色為"FFFFFF",寬1920,高1080。
創(chuàng)建一個(gè)圖層,序號(hào)為"0.1",純色,顏色為"66CCFF",寬960,高540。
刷新顯示。
等待響應(yīng)。
刪除序號(hào)為0的圖層組。
刷新顯示。
等待響應(yīng)。
保存腳本,運(yùn)行Artemis.exe。 最終運(yùn)行效果:顯示白色背景上有一片天依藍(lán),點(diǎn)擊一下后畫面變成黑色。 // 實(shí)操示例代碼在本篇末尾。
好了,至此你已經(jīng)學(xué)會(huì)放簡(jiǎn)單幻燈片的所有知識(shí)了。 讓我們連貫起來(lái)!
以下代碼實(shí)現(xiàn)放三張純色幻燈片的效果,分別為紅、綠、藍(lán)色。
// 紅綠藍(lán)幻燈片 2023-07-27
// 紅色!
[
lyc
id
="
0
"
color
="
FF0000
"
width
="
1920
"
height
="
1080
"]
//創(chuàng)建紅色圖層
[
flip
]
//刷新顯示
@
//等待響應(yīng)
// 綠色!
[
lydel
id
="
0
"]
//刪除原來(lái)的圖層
[
lyc
id
="
0
"
color
="
00FF00
"
width
="
1920
"
height
="
1080
"]
//重新創(chuàng)建圖層綠色
[
flip
]
//刷新顯示
@
//等待響應(yīng)
// 藍(lán)色!
[
lydel
id
="
0
"]
//刪除原來(lái)的圖層
[
lyc
id
="
0
"
color
="
00FF00
"
width
="
1920
"
height
="
1080
"]
//重新創(chuàng)建圖層藍(lán)色
[
flip
]
//刷新顯示
@
//等待響應(yīng)
動(dòng)手去試試吧!
以下為實(shí)操的示例代碼:
實(shí)操1:
// 2023年7月27日 [debug mode="1" level="3"] [dialog title="你好" message="測(cè)試"]
解析
:本實(shí)操只是為了訓(xùn)練語(yǔ)法。
實(shí)現(xiàn)效果如上圖。
實(shí)操2:
[lyc id="0" color="FFFFFF" width="1920" height="1080"] [lyc id="0.1" color="66CCFF" width="960" height="540"] [flip] @ [lydel id="0"] [flip] @
解析
:涉及圖層創(chuàng)建與刪除、圖層組概念。
實(shí)現(xiàn)效果如上圖。
本篇文章的所有代碼均由我測(cè)試可行,有疑問(wèn)盡管聯(lián)系我。 獲取更多知識(shí)請(qǐng)繼續(xù)關(guān)注本文集的更新!