3 先学放个幻灯片!「Artemis教程全站首发」
在上一期教程,我们配置了设置文件,现在启动Artemis.exe不会报错了,但是后续操作要在脚本文件里完成。 我们已经在游戏根目录下创建好了main.iet,现在用文本编辑器打开它。
Artemis使用KAG语言(类似krkr的标签语言),我们先来学习: 1、语法
(1)标签tag
Artemis使用的是KAG标签语言,标签是它的主要代码。学过HTML的人应该知道标签语言,这是一种“有头有尾”的语言。 在KAG语言中,头是英文方括号“[”,尾是英文方括号“]”,标签内写入标签名tag、参数名和参数值。 请见例子: [
flip
]
[
debugprint
level
="
3
"
data
="
你好
"]
这是两行KAG语言的代码。 第一行的
flip
标签没有要求参数,所以只要写tag名。 第二行
debugprint
要求
两个参数,第一个参数
名
为
level
的
值
是
3
,第二个参数名为
data
值为"
你好
"。
注意:所有的参数值都是
字符串
,都需要用英文双引号包裹。(强烈建议加上,虽然程序会自动补全。参见稍后发布的「偷懒」专题)然而标签名和参数名不要加引号。标签名和第一个参数名、两个参数之间要空格来分开。 有时候标签比较长,一行挤不下怎么办? 也可以竖着写。比如: [
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
"
]
竖着写时,为了美观,每个参数名前面建议用
四个空格
或者一个tab来区分。 (2)注释
Artemis最大的特点就是“你可以做任何事情,但你必须自己
从头
开始构建它”。 —— 学习Artemis的日本网友:兰皮 用Artemis从头构建的话,制作游戏是一个耗时的工作。所以当你写了几行代码,隔了几天再看时,你大概
不会愿意
花时间一字一句重新理解你写的代码。这种情况下,注释可以帮到你。 注释里面可以写任何东西,建议大家用自然语言描述运行的代码的目的。 注释的方式和C++相同,有两种,分为单行注释和多行注释。 单行注释后面的字符不会执行
// 我是一行注释。
多行注释内部的字符不会执行:
/*一行注释。。。。。。。。。
两行注释 我是注释 注释啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
三行注释。。我在里面哦哦哦哦哦哦哦哦*/
两种注释都可以尾随在代码语句后面。如: [
flip
]
// 刷新显示
[
flip
]
/* 刷新显示 */
多行注释可以插入在代码内部(可能比较乱),如:
[
dialog
title
/*标题*/
="
Hello
"
/*消息*/
message
="
World
"]
但是注意多行注释
不要截断
标签名称或参数名称,插入到参数值会被当作参数值而不是注释。(多行注释甚至可以代替空格来分开参数)
实操 1
在main.iet中: 写一行
单行注释
,内容是现在的日期和时间。
写一个标签,标签名称为
debug
,第一个参数叫
mode
,值为
"2"
,第二个参数名为
level
,值为
"3"
。
写一个标签,名称为
dialog
,第一个参数为
title
,值为 "
你好
",第二个参数为
message
,值为"
测试
"。
保存脚本,运行Artemis.exe 最终效果是:弹出标题为“你好”的对话窗口,消息内容为“测试”。 // 实操示例代码在本篇末尾。
2、放个幻灯片
(1)图层创建、图层的特性、图层删除
俗话说得好,要学会走先学会爬。在构建复杂的游戏之前,我们先实现一个基本功能: 放幻灯片! 先熟悉Artemis的绘图结构。 像绘画软件一样,基本的绘图单位是图层(layer)。 每个图层都必须有自己的名字
id
,重名的现象不被允许。建议使用数字作图层名字,如
"0" "1" "2"
。当然不用也不是不行,如
"背景" "舞台" "前景"
。 图层可以显示纯色
或
图片。(下文1、2) 创建两种图层请使用标签
lyc
1、纯色图层必须指定 图层序号
id
、颜色
color
、宽
width
、高
height
参数。 [
lyc
id
="
0
"
color
="
66CCFF
"
width
="
1920
"
height
="
1080
"]
其中,
lyc
意为layer create(创建图层),该语句创建了一个序号为0,颜色为天依蓝,宽1920高1080的纯色图层 颜色color要求16进制RGB或者ARGB格式。16进制数大写小写都支持,为了美观请使用大写。 2、图片图层必须在
file
参数指定图片的相对路径,使用左斜杠“
/
”。推荐的图片格式有png、jpeg或jpg、一部分psd(会自动合并图层) [
lyc
id
="
2
"
file
="
image/bg.png
"
mask
="
mask.png
"]
其中有个上面没有提到的参数
mask
,是
可选参数
,是遮罩层图片。使用
mask
可以达到在图层上镂空和半透明的效果。注意:遮罩层图片大小必须与图层大小一致,要求8位(256色)灰度图片(可以在线转换或者使用xnview软件转换)。 需要了解的还有
图层的特性
:
有透明度
:图层可以出现镂空,也可以像染色玻璃一样透出下面的东西。(图层上的图片、图层填色的Alpha值、人工设置的图层属性可以影响透明度)但是模糊等特效需要手动p图。
相互重叠
:像盖被子一样,你可以盖一床也可以盖许多床,你可以盖大被子也可以盖小被子也可以一起盖,你甚至可以把被子蹬开蹬掉床。注意,同级序号大的图层会在更上方,级别更大的图层在更上方(父与子图层,下面有介绍)
图层是矩形的
:矩形就是长方形,不论是大被子还是小被子都得是长方形的。但是你可以通过镂空的方式间接使它奇形怪状(把被子剪成圆形?)。
大小角度可以变换
:图层默认位置左上角对齐且不旋转。在自己家里睡觉,盖被子随意一点。(像摊煎饼一样转被子?)
图层数量受机器性能限制
:柔弱的人承受不了太多层被子,同理,羸弱的电脑承受不了太多的图层。
图层分“父”与“子”
:这是重点。一个父图层可以有许多子图层,子图层的名字写在父图层和英文句号后面,如
"0.0" "0.1" "0.2" "背景.星星" "舞台.灯光" "前景.人物"
。父图层不一定有图像显示,可以只作为图层分组依据。
子图层的所有属性都是以父图层为基础的,是相对于父图层而言的,可谓是“青出于蓝而胜于蓝”。
父图层及其所有的子图层组成
图层组
,图层组的名字是父图层的名字(如"0" "1" "2")
父图层属性的变化会影响该图层组的属性,子图层属性也随之变化。打个比方:床上有几床被子。床就是父图层,被子就是子图层。你挪床,被子也跟着移动。
有个特例:被子太大床铺不下时,多出的被子虽然会掉下床,但是仍然可见,也就是说父图层对子图层的控制力有限(孩子青春期叛逆)。
注:直接创建子图层时,父图层会自动存在。如创建子图层0.0后,父图层0就已经存在。
一张图帮助理解(羸弱绘图:Redroadsl)
官方的建议:0图层用来显示铺满屏幕的背景。 物有本末,事有终始,创建一个图层也可以删除一个图层。使用
lydel
标签删除一个图层。 [
lydel
id
="
1
"]
lydel
意为layer delete删除图层,只需输入图层id即可删除该图层。注意:删除一个父图层会删除其图层组的所有图层。即删除1图层会接连删除1.1、1.2、1.3... // 多余的图层会占用运行内存,使程序运行卡顿。请及时清理用不到的图层。 (2)刷新显示
上面所有对图层的操作都是在幕后完成的,要把最终结果呈现出来,我们需要刷新显示。最简单的刷新显示的方法是使用
flip
标签,无参数要求。如下: [
flip
]
就这么简单。 但事实上非常容易忘记刷新显示。 (3)等待响应
飞快自动播放的幻灯片不是给人看的。我们需要让它等待我们的动作来翻页。 这也很简单,只需在需要等待的地方写一个@就行。如下:
@
// 用户触发响应的方法为按动鼠标或按下键盘。
/* 小知识:
@
其实是个标签的简写,正式写法为[
@
]。 更多请参见「偷懒」专题(稍后发布)*/
实操 2
在main.iet中(可以接着上面实操的代码继续写): 创建一个图层,序号为"0.0",纯色,颜色为"FFFFFF",宽1920,高1080。
创建一个图层,序号为"0.1",纯色,颜色为"66CCFF",宽960,高540。
刷新显示。
等待响应。
删除序号为0的图层组。
刷新显示。
等待响应。
保存脚本,运行Artemis.exe。 最终运行效果:显示白色背景上有一片天依蓝,点击一下后画面变成黑色。 // 实操示例代码在本篇末尾。
好了,至此你已经学会放简单幻灯片的所有知识了。 让我们连贯起来!
以下代码实现放三张纯色幻灯片的效果,分别为红、绿、蓝色。
// 红绿蓝幻灯片 2023-07-27
// 红色!
[
lyc
id
="
0
"
color
="
FF0000
"
width
="
1920
"
height
="
1080
"]
//创建红色图层
[
flip
]
//刷新显示
@
//等待响应
// 绿色!
[
lydel
id
="
0
"]
//删除原来的图层
[
lyc
id
="
0
"
color
="
00FF00
"
width
="
1920
"
height
="
1080
"]
//重新创建图层绿色
[
flip
]
//刷新显示
@
//等待响应
// 蓝色!
[
lydel
id
="
0
"]
//删除原来的图层
[
lyc
id
="
0
"
color
="
00FF00
"
width
="
1920
"
height
="
1080
"]
//重新创建图层蓝色
[
flip
]
//刷新显示
@
//等待响应
动手去试试吧!
以下为实操的示例代码:
实操1:
// 2023年7月27日 [debug mode="1" level="3"] [dialog title="你好" message="测试"]
解析
:本实操只是为了训练语法。
实现效果如上图。
实操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] @
解析
:涉及图层创建与删除、图层组概念。
实现效果如上图。
本篇文章的所有代码均由我测试可行,有疑问尽管联系我。 获取更多知识请继续关注本文集的更新!