系统表达式

322次阅读
没有评论

共计 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

正文完
 0
评论(没有评论)