共计 6713 个字符,预计需要花费 17 分钟才能阅读完成。
系统表达式
本节概述了 Construct 中内置 System 对象的表达式。许多是常见的数学运算,它们可以在表达式字典中与描述一起列出,但为了完整起见,它们包含在这里。
本节不列出可在表达式中使用的运算符或语法,而仅列出特定于 System 对象的表达式。有关如何在 Construct 中使用表达式的更多常规信息,请参阅表达式。
显示
原始视口宽度
原始视口高度
获取“视口大小”项目属性的原始值。即使使用“设置画布大小”等操作,这些表达式的值也不会更改。
层
在需要图层的表达式中,可以输入图层的名称(字符串形式)或索引(数字形式,从零开始)。
CanvasToLayerX(层,x,y)
CanvasToLayerY(层,x,y)
计算给定图层的画布 CSS 坐标中某个位置下方的布局坐标。
3D 相机插件还提供在 3D 中工作的同名表达式。
LayerToCanvasX(图层,x,y)
LayerToCanvasY(层,x,y)
计算给定图层的布局坐标中位置上方的画布 CSS 坐标。
3D 相机插件还提供在 3D 中工作的同名表达式。
LayerToLayerX(从层,到层,x,y)
LayerToLayerY(从层,到层,x,y)
计算第二层(toLayer)上的位置,该位置对应于第一层(fromLayer)上的给定位置。这是将图层位置转换为画布 CSS 坐标,然后返回到不同图层上的位置的简写。
3D 相机插件还提供在 3D 中工作的同名表达式。
LayerAngle(层)
获取图层的角度(以度为单位)。
LayerIndex(层)
从图层的名称中获取图层的从零开始的索引。
LayerOpacity(层)
获取图层的不透明度(或半透明),从 0(透明)到 100(不透明)。
LayerParallaxX(图层)
LayerParallaxY(图层)
获取图层的当前视差 X 和 Y 分量。
LayerScale(层)
获取图层的当前比例,不包括整体布局比例。
LayerScaleRate(层)
获取图层的当前缩放速率,该速率定义了图层的缩放速度(如果有的话)。
LayerScrollX(层)
LayerScrollY(层)
获取特定图层的当前滚动位置。请注意,这始终与布局滚动位置(由 ScrollX 和 ScrollY 系统表达式给出)相同,除非使用设置图层滚动系统操作独立滚动图层。
LayerZElevation(层)
获取图层在 Z 轴上的当前高程。
ViewportBottom(图层)
ViewportLeft(图层)
ViewportRight(图层)
ViewportTop(图层)
返回给定图层的布局坐标中的视口边界。如果图层分别进行视差、缩放或旋转,则并非所有图层都具有相同的视口。
3D 相机插件还提供在 3D 中工作的视口表达式。
ViewportMidX(图层)
ViewportMidY(层)
返回给定图层的布局坐标中视口区域的中点。
ViewportWidth(图层)
ViewportHeight(图层)
返回给定图层的布局坐标中的视口大小。
布局
画布快照
包含触发“在画布上”快照后“快照画布操作生成的图像。(请注意,此表达式在“快照画布”操作后不可用 – 只能在“在画布上快照触发器”后使用它。该表达式返回图像文件的数据 URI。这可以通过“从 URL 加载图像”加载到 Sprite 或 TiledBackground 对象中,发送到服务器或存储在本地,或者在新选项卡中使用 Browser 对象打开以保存到磁盘。
布局角度
获取当前布局的角度(以度为单位)。这不包括单个图层的旋转。
布局比例
获取通过“设置布局比例”操作设置的整个布局的当前比例。这不包括单个图层的缩放。
布局宽度
布局高度
获取当前布局的大小(以像素为单位)。
布局名称
获取当前布局的名称。
滚动 X
滚动 Y
获取视图居中的当前位置。
消失点
消失点 Y
获取布局中的当前消失点,其中范围 0 -100 表示视口。有关详细信息,请参阅“消失点布局”属性。
数学
这些表达式只是普通的数学函数,就像你在计算器上找到的那样。但是,请注意,所有使用角度的函数都以度为单位,而不是弧度。角度从 0 度开始,朝右,顺时针递增。
sin(x)、cos(x)、tan(x)、asin(x)、acos(x)、atan(x)使用角度(度)的三角函数。
ABS(X)x 的绝对值,例如 =5abs(-5)
角度(x1,y1,x2,y2)计算两点之间的角度
anglelerp(a,b,x)将角度 a 与 b 线性插值 x。与标准 lerp 不同,这考虑了角度的周期性。
角度差异(a1,a2)返回两个角度之间的最小差值
角度旋转(开始、结束、步进)旋转角度从角度步长向终点,全部以度为单位。如果 start 距离 end 小于步数,则返回 end。
CEIL(x)四舍五入 x 例如 =6ceil(5.1)
cosp(a,b,x)a 到 b 的余弦插值乘以 x。计算(a+b+(a-b)cos(x180°))/2。
立方(a,b,c,d,x)通过 a、b、c 和 d 乘以 x 的三次插值。计算 lerp(qarp(a,b,c,x),qarp(b,c,d,x),x)。
距离(x1,y1,x2,y2)计算两点之间的距离
exp(x)计算 e^x
楼层(x)四舍五入 x 例如 =5floor(5.9)
无穷大表示无穷大的浮点数值。
lerp(a,b,x)a 到 b 的线性插值乘以 x。计算 a +x*(b-a)。
unlerp(a,b,y)反向线性插值:如果 lerp(a,b,x)=y,则 unlerp(a,b,y)=x。计算(y-a)/(b-a)。
ln(x)记录到 x 的基数 e。
对数 10(x)记录到 x 的基数 10。
最大值(a,b[,c…]),min(a,b[,c…])计算给定数字的最大值或最小值。只要至少有两个参数,就可以使用任意数量的参数。
圆周率数学常数 pi(3.14159…)
qarp(a、b、c、x)通过 a、b 和 c 乘以 x 的二次插值。计算 lerp(lerp(a,b,x),lerp(b,c,x),x)。
round(x)将 x 四舍五入到最接近的整数,例如 =6round(5.6)
roundToDp(x,数字)将 x 四舍五入到给定的小数位数,例如 =1.67roundToDp(1.666666,2)
符号(x)检索 x 的符号:- 1 表示任何负数,1 表示任何正数,如果 x 为零,则为 0。
sqrt(x)计算 x 的平方根,例如 =5sqrt(25)
getbit(x,n)获取表示为 32 位整数的 x 的第 n 位。例如,当表示为 32 位整数时,将获得数字 7 的最低有效位。返回 0 或 1。getbit(7,0)
setbit(x,n,b)将表示为 32 位整数的 x 的第 n 位设置为 b(0 或 1)。返回生成的 32 位整数。
切换位(x,n)切换表示为 32 位整数的 x 的第 n 位。如果该位为 0,则设置为 1; 如果为 1,则设置为 0。返回生成的 32 位整数。
内存管理
ImageLoadingProgress 返回当前繁忙的任何内存管理加载操作的当前加载进度,比例为 0 -1。
保存并加载 SaveStateJSON 在“保存完成时”或“加载完成时”中,返回表示保存游戏数据的 JSON 数据字符串。稍后可以使用“从 JSON 加载”操作加载此内容。请注意,有关如何制作存档游戏的详细信息,请参阅文档。
系统 CurrentEventNumber 当前运行的当前事件的编号,以及它所属的事件表的名称。这些对于测试目的很有用,例如将当前事件编号记录到浏览器控制台。
ImageMemory 用法返回所有当前加载的图像的估计总内存占用量(以 MB 为单位)。注意:图像存储器有时也称为“VRAM”,但这并不严格正确,因为并非所有设备都具有专用于图像的存储器。此外,此表达式不包括声音、代码或其他非图像资源的内存使用量。
加载进度返回加载器布局上的当前加载进度。进度以 0 到 1 之间的数字返回,例如完成一半为 0.5。有关详细信息,请参阅教程如何制作自定义加载屏幕。
循环索引获取任何当前正在运行的循环中的索引(到目前为止的重复次数)。LoopIndex(名称)获取具有给定名称的循环的索引(到目前为止的重复次数)。对于在嵌套循环中获取索引很有用。
对象计数当前创建的对象总数。
项目名称返回项目名称,因为它显示在“项目属性”中。
项目版本将输入的版本返回到“项目属性”中。请注意,这始终以字符串形式返回,而不是数字。
发短信
查找(src,text)
findCase(src,text)
在 src 中找到出现文本的第一个索引,否则返回 -1。find 不区分大小写,findCase 区分大小写。
left(文本,计数)
返回文本的第一个计数字符数。
len(文本)
返回文本中的字符数。
小写(文本)
将给定文本转换为全部小写。
mid(文本、索引、计数)
返回从文本中索引开始的计数字符。注释计数可以设置为 -1,以将字符从索引返回到字符串末尾。
换行
包含换行符的字符串。用于在字符串中插入换行符,例如 "Hello" & newline & "World"
RegexMatchAt(字符串、正则表达式、标志、索引)
使用 Flags 处理 String 上的正则表达式正则表达式,并在结果列表中返回 Index 处的条目。
RegexMatchCount(字符串、正则表达式、标志)
处理带有标志的字符串上的正则表达式正则表达式,并返回结果列表中的条目数。
正则表达式替换(字符串、正则表达式、标志、替换)
在 String 中,将正则表达式 Regex(带有 Flags)的 Replace 与字符串 Replace 匹配。替换字符串可以包含以下特殊字符:$$(插入 $)、$&(插入匹配的子字符串)、$’(插入匹配子字符串前面的字符串部分)或 $’(插入匹配子字符串后面的字符串部分)。
正则表达式搜索(字符串、正则表达式、标志)
返回 String 中第一个字符的索引,其中可以找到带有标志的正则表达式的匹配项。
替换(src、查找、rep)
在 src 中查找所有出现的 find,并将它们替换为 rep。
right(文本、计数)
返回文本的最后计数字符数。
StringSub(文本,sub1 [,sub2…])
替换给定字符串中表单的占位符。此表达式接受可变数量的参数。例如,返回 Hello Sam!,因为占位符将替换为第一个提供的附加参数。可以通过增加占位符中的数字来提供其他参数,例如 返回嗨山姆,你的分数是 100!。请注意,替换可以是字符串或数字。如果同一占位符多次出现,则它们都将被替换。如果使用的占位符未提供参数,则保持原样,例如 返回 嗨,山姆,你的分数是 {1}!,因为只提供了一个替换。{n}StringSub("Hello {0}!", "Sam"){0}StringSub("Hi {0}, your score is {1}!", "Sam", 100)StringSub("Hi {0}, your score is {1}!", "Sam")
tokenat(src,索引,分隔符)
从 src 返回第 N 个令牌,用分隔符拆分字符串。例如,返回橙子。tokenat("apples|oranges|bananas", 1, "|")
使用 Array 对象的 Split string 操作可提高灵活性。为了更好地处理更复杂的数据,请使用更可靠的数据格式,如 JSON。
tokencount(src,分隔符)
使用分隔符计算 src 中出现的令牌数量。例如,返回 3。tokencount("apples|oranges|bananas", "|")
修剪(src)
返回 src,并删除字符串开头和结尾的所有空格(空格、制表符等)。
大写(文本)
将给定文本转换为全部大写。
URLEncode(str)
URLDecode(str)
以适合包含在 URL 或 POST 数据中的格式与字符串相互转换。
zeropad(数字,数字)
通过在数字前面添加零,将数字填充到一定数量的数字,然后以字符串形式返回结果。例如,返回字符串“00045”。zeropad(45, 5)
时间
CPU 使用率
在逻辑(如运行事件或处理行为)中花费的最后一秒的百分比。这是用于性能测量的。
请注意,在大多数设备上,渲染发生在单独的 GPU 上,因此不计入此测量值;为此,fps 或 GPUUtilisation 是更好的衡量标准。
另请注意,此测量基于计时器,因此应被视为近似值,并且它仅测量主线程上的时间。
这种测量可能不可靠,尤其是在系统基本处于空闲状态时。
大多数现代设备在没有满载的情况下故意减慢 CPU 速度以节省电量。这意味着工作需要更长的时间才能完成,并且此表达式会误导性地返回更高的度量值,因为它是基于工作所需时间的时间。
它通常仅在设备的最大性能模式下(即满载)下才可靠。
DT 型
增量时间(以秒为单位)。请参阅增量时间和帧速率独立性。
FPS 的
项目渲染的每秒帧数(FPS)。最常见的显示刷新率为 60 Hz,因此通常设计高效的项目将以 60 FPS 的速度呈现。
但是请注意,如果屏幕上没有任何变化,则不会呈现任何内容,因此 FPS 测量值可能会降至 0 或显示较低的结果;这并不表示性能不佳,只是表示渲染所需的帧数较少。
Platform Info 对象的 TicksPerSecond 表达式指示引擎步进的频率,这可能与每秒呈现的帧数不同。
GPUUtilisation
用于渲染图形的最后一秒所占的百分比。这表示图形处理单元(GPU)的繁忙程度,这对于性能测量很有用。
此测量基于定时器,因此应被视为近似值。GPU 利用率仅受要完成的渲染工作量(例如屏幕上可见的对象数量)的影响,如果窗口大小较大,则 GPU 利用率也会增加。
请注意,此测量仅适用于某些系统。如果不受支持,它将返回 NaN(表示非数字的特殊值)以指示没有可用值。
请参阅 CPUUtilisation 下的注释,了解在某些情况下可能不可靠的测量。这也适用于 GPU,也会影响此测量。
滴答计数
自项目启动以来运行的刻度数。
时间
自项目开始以来的秒数,考虑到时间刻度。
时间表
当前时间刻度。
wallclocktime
自项目开始以来的秒数,不考虑时间刻度(即实际时间)。
与其他时间表达式不同,wallclocktime 可以在同一时钟周期内更新,例如在长循环中。这意味着它可以用于性能测量或在固定时间段内工作等。
值
choose(a, b [, c…])
随机选择一个给定的参数。例如:随机选择四个数字中的一个并返回该数字。这也适用于字符串,例如 返回 Hello 或 Goodbye。只要至少有两个参数,就可以使用任意数量的参数。choose(1, 3, 9, 20)choose("Hello", "Goodbye")
chooseindex(索引,值 0[, …])
通过从零开始的索引选择给定参数之一。例如:chooseindex(0, "foo", "bar", "baz") 返回“foo”chooseindex(1, "foo", "bar", "baz") 返回“bar”chooseindex(2, "foo", "bar", "baz") 返回“baz”索引后可以包含任意数量的参数(但必须至少有一个)。如果索引超出范围,它将返回第一个或最后一个值,例如,在上面的示例中,-1 的索引仍将返回“foo”。
lamp(x, lower, upper)
如果 x 小于 lower,则返回 lower,如果 x 大于 upper,则返回 upper,否则返回 x。
float(x)
将整数或文本 x 转换为浮点数(小数)。如果 x 是文本,则数字后面允许使用非数字字符,但不允许在数字之前使用。例如,返回 3.1,但返回 0。float("3.1xx")float("xx3.1")
int(x)
将浮点数或文本 x 转换为整数(整数)。如果 x 是文本,则数字后面允许使用非数字字符,但不允许在数字之前使用。例如,返回 33,但返回 0。int("33xx")int("xx33")
random(x)
生成一个从 0 到 x 的随机浮点数,不包括 x。例如:可以生成 0、2.5、3.29293,但不能生成 4。用于仅生成整数 0、1、2、3。random(4)floor(random(4))
random(a, b)
在 a 和 b 之间生成一个随机浮点数,包括 a,但不包括 b。
rgbEx(r, g, b)
rgbEx255(r, g, b)
rgba(r, g, b, a)
RGBA255(R, G, B, A)
生成一个包含具有给定红色、绿色、蓝色和可选字母成分的颜色的单个数字。rgbEx 和 rgba 使用 0-100 范围内的组件,而 rgbEx255 和 rgba255 使用 0-255 范围内的组件。如果未提供 alpha,则生成的颜色是不透明的。这些对于采用颜色参数的条件或操作非常有用。
str(x)
将整数或浮点 x 转换为字符串。通常这不是必需的,因为字符串可以使用 & 运算符构建,例如 "Your score is " & score