Construct2/3

创建于:2017-02-24

创建人: iconboy

103 信息 412 成员
Construct2/3 引擎开发专题

[翻译]Runtime 参考函数表

慕雪白羊 2017-10-23

Construct 2 Runtime reference

运行时参考函数表 汉化版

测试版本 v0.9,By 慕雪白羊

CiGA Construct2/3 开发者 qq 群: 180911504

[点击这里查看SDK]

《目录页》

文档和插件模板下载地址: 点这里进入目录 >> Construct2 插件开发 SDK


  • 运行时的引用………………………………………….….…... 0
  • 布局功能………………………………………………..…….…1
  • 层函数………………………………………………………...…2
  • 对象类型功能……………………………………………….…..3
  • 实例函数…………………………………………………………4
  • CR函数…………………………………………………………..5

近期喜欢的会员

 
慕雪白羊 2017-10-23

0-运行时的引用

运行时对象表示在浏览器中运行的用户项目的单个实例。 通常通过对象实例的this.runtime访问它。 记住只能使用已记录的属性和方法。.

Runtime properties/运行时属性

runtime.canvas (只读)
项目正在运行的页面中的canvas元素。

runtime.width (只读)
runtime.height (只读)
页面中的canvas元素的大小。 如果启用浏览器中的全屏,并且用户调整浏览器窗口的大小,这可能会在运行时更改。

runtime.redraw (只写)
任何影响项目呈现方式的任何事情都必须设置为true。 如果重绘 仍然为false,则假定画布不会更改,也不会重新绘制。

runtime.plugins[]
在项目中使用的所有插件的数组。

runtime.types_by_index[]
项目中所有对象类型的数组。

runtime.layouts_by_index[]
项目中所有布局的数组。

runtime.eventsheets_by_index[]
项目中所有事件表的数组。

runtime.wait_for_textures[] (只写)
在加载期间将HTML Image()类添加到此数组,并且加载程序将在启动运行时之前等待它完成下载。 见平铺背景为例。

runtime.timescale
当前时间尺度。

runtime.kahanTime.sum (只读)
当前游戏中的时间,以秒为单位,并附有时间标度。

runtime.tickcount
从游戏开始以来经过的刻度数。

runtime.changelayout (只写)
设置为对布局对象的引用,并且以下勾选运行时将执行go to layout上的布局。

runtime.running_layout (只读)
对正在运行的当前布局的引用。

runtime.files_subfolder (只读)
保存项目文件的子文件夹。

runtime.extra
运行时被密封。 您可以在此对象中存储所需的任何其他属性。

runtime.start_time (只读)
在启动第一个布局时设置为date.getTime()

Runtime functions/运行时函数

runtime.tickMe(this)
调用在您的插件实例上运行时调用tick() 您必须在实例的原型中定义一个tick()方法。 注意:行为被自动勾选。

runtime.getDt(this)
返回delta时间,以秒为单位,并应用时间缩放。 您必须传递一个实例来获取dt ,以保持与Set对象时间尺度功能的兼容性。

runtime.addDestroyCallback(f)
每当实例销毁时调用f(inst)

runtime.DestroyInstance(inst)
销毁给定的实例。

runtime.createInstance(type, layer)
在给定图层上创建对象类型的新实例。返回对创建的实例的引用

runtime.getLayerByName(name)
按名称,不区分大小写获取图层,如果找不到,则为null

runtime.getLayerByNumber(index)
通过基于零的索引获取图层,如果超出范围则为null

runtime.testAndSelectCanvasPointOverlap(type, x, y, inverted)
Pick与画布坐标中的点(x,y)重叠的任何类型的实例。 通过条件的倒置状态以获得正确的行为。 有关示例,请参阅鼠标对象。

runtime.testOverlap(a, b)
如果两个给定的实例重叠,返回true。

runtime.testOverlapSolid(inst)
如果inst与实体重叠,则返回具有Solid属性的实例,否则返回null

runtime.pushOutSolid(inst, xdir, ydir, dist)
将xdir和ydir给出的距离推到dist ,直到inst不重叠任何实体。 如果inst完成重叠,它将被恢复到原来的位置,并返回false 。 否则返回true 。

runtime.pushOutSolidNearest(inst, max_dist)
将八度方向的spiral pattern推送到max_dist像素,直到它不再与实体重叠。 如果inst仍然由max_dist重叠,则返回到其原始位置,并返回false , 否则返回true 。

runtime.trigger(method, inst)
触发方法指定的条件,并触发对象触发。 条件必须指定cf_trigger而不是cf_faketrigger 。 如果触发你自己的插件的触发器,传递给inst 。 方法必须以下列形式指定插件例程:

cr.plugins_.MyPluginID.prototype.cnds.MyTrigger

例如:

cr.plugins_.Mouse.prototype.cnds.OnClick

runtime.getCurrentCondition()
返回当前条件。 仅在条件方法中有效。

runtime.getCurrentAction()
返回当前操作。 只有在行动方法有效。

runtime.getCurrentEventStack()
返回当前事件“堆栈帧”。 这可以用于通过runtime.getCurrentEventStack()。current_event来确定当前事件。

 
慕雪白羊 2017-10-23

1-布局功能

布局表示项目在运行时的布局。 一次只能运行一个布局。

布局属性

layout.runtime
引用回到运行时

layout.event_sheet
对布局事件表的引用,如果没有,则返回null。

layout.name
布局的名称。

layout.width
layout.height
布局的大小,以像素为单位。

layout.unbounded_scrolling
一个布尔值,表示“无限滚动”设置。

layout.layers[]
布局上的一组图层。

Layout functions

layout.scrollToX(x)
layout.scrollToY(y)
将布局滚动到给定的坐标。

 
慕雪白羊 2017-10-23

2-层函数

布局由多层组成。 所有布局对象都属于一个图层。

图层属性

layer.layout
返回图层的布局的参考。

layer.runtime
引用回到运行时。

layer.scale
当前层规模。

layer.viewLeft
layer.viewRight
layer.viewTop
layer.viewBottom
定义当前可见的视口的矩形。 如果比例尺不为1.0,则可能会大于或小于画布大小。

layer.name
图层名称。

layer.index
基于零的索引。

layer.visible
一个布尔值,指示图层当前是否可见。

layer.background_color
图层的背景颜色,格式为[r,g,b,a]。 忽略层是透明的。.

layer.transparent
一个布尔值,表示图层是否透明。.

layer.parallaxX
layer.parallaxY
该层的X和Y轴的视差率。

layer.opacity
层的不透明度,从0(透明)到1(不透明)。

layer.forceOwnTexture
一个布尔值,表示Force自己的纹理设置。

layer.instances[]
当前在此图层上的所有对象实例(任何对象类型)的数组。

Layer functions

layer.canvasToLayerX(x)
layer.canvasToLayerY(y)
 从画布坐标转换为图层坐标。 用于将鼠标坐标转换为图层坐标。 请参阅鼠标一个例子。

 
慕雪白羊 2017-10-23

3-对象类型功能

有关插件与对象类型与实例的描述,请参阅运行时函数中的类。 由于SOL(选定对象列表)是基于对象类型的,所以这些也在下面被记录。

对象类型属性

type.plugin
引用对象类型来自的插件。

type.texture_file
仅在指定pf_texture时有效。 纹理PNG文件的文件名。

type.texture_filesize
仅在指定pf_texture时有效。 纹理PNG文件的文件大小,一般用于帮助进度条精度。

type.animations
仅在指定pf_animations时有效。 存储对象动画。 以Sprite为例。

type.index
运行时的types_by_index数组中的对象类型的从零开始的索引。

type.instances[]
该对象类型的当前创建的所有实例的数组。

type.behaviors[]
添加到此对象类型的所有行为的数组。

对象类型函数

type.getFirstPicked()
返回此类型的第一个实例。 如果在一个事件中,这将返回第一个选择的实例,否则为实例数组中的第一个实例。 如果没有实例或被选择,则返回null 。

type.getPairedInstance(inst)
inst必须来自另一个对象类型。 返回与inst对应的此对象类型的实例。

type.getCurrentSol()
返回当前的SOL对象。 见下文。

The SOL

 SOL(所选对象列表)是当前与事件匹配的所有实例的列表。 根据完整实例列表中的条件匹配条件过滤器实例。 在动作,条件或表达式中,您可能希望访问此列表(例如,对于静态条件)。 对象类型上的getCurrentSol()返回其SOL对象,这里记录了这个对象。

请记住,除了以下任何对象类型,您不得修改SOL:
- 条件中当前的对象类型,或
- 在对象参数中传递的任何对象类型。

不过,您可能只能单纯地去访问其他的SOL。

SOL 属性

sol.type
引用SOL所用的对象类型。

sol.instances[]
当前匹配事件的实例的数组。 如果sol.select_all ,则会被忽略,并且可能有未定义的内容(例如从先前事件遗留的任意实例)。 因此,只有当sol.select_allfalse时才使用。

sol.select_all
如果为true ,则指定sol.instances必须被忽略并使用sol.type.instances (所有实例的列表)。 如果为false ,则表示sol.instances的内容为当前选择。 如果设置为true ,则必须清除sol.instances并填写您的预期内容。

SOL 函数

sol.hasObjects()
如果对象类型至少有一个实例,并且select_all为true ,或者SOL实例数组不为空并且select_all为false ,则返回true ,否则返回false 。

sol.getObjects()
返回对当前实例数组的引用。 如果select_alltrue ,则为所有实例的类型数组。 如果为false ,则是SOL当前的实例列表。

sol.pick(inst)
如果select_alltrue ,则将其设置为false并选择inst 。 否则,确保inst在SOL实例数组中。 注意:尽可能避免此功能,因为它在O(n)时间运行,对于大型项目而言会很慢。.

 
慕雪白羊 2017-10-23

4-实例函数

实例通常是插件定义的。 您应该阅读插件的来源,看看它是如何实现的。 然而,构造2保证了某些属性和功能的存在。 这些常见的属性和功能在这里记录。 注意与布局中的对象相关的任何属性或函数(例如xy )不存在于非布局对象中。

公共实例属性

inst.type
引用实例的对象类型

inst.uid (read-only)
实例的唯一ID。 构造2发出一个UID为0的第一个实例,并为每个创建的新实例递增1。 UID不能改变对象的生命。

inst.instance_vars[]
实例变量数组。 每个元素是与该索引处的实例变量的当前值相对应的普通javascript值。

inst.x
inst.y
实例在层中的当前位置。 如果已更改,则必须调用inst.set_bbox_changed()

inst.width
inst.height
当前实例的大小,以像素为单位。 如果已更改,则必须调用inst.set_bbox_changed()

inst.angle
当前物体角度,以弧度表示。 并非所有对象都支持一个角度,例如Text对象。 如果已更改,则必须调用inst.set_bbox_changed()

inst.opacity
当前对象的不透明度,从0(透明)到1(不透明)。 不是所有的对象都使用不透明度。

inst.hotspotX
inst.hotspotY
热点的当前位置,在纹理坐标(例如(0.5,0.5)将是一个居中的热点)。

inst.bbox
表示实例的轴对齐边界框的cr.rect 。 在使用此属性之前,必须先调用inst.update_bbox()

inst.bquad
一个cr.quad表示实例的边界四边形。 在使用此属性之前,必须先调用inst.update_bbox()

inst.visible
一个布尔值,指示对象当前是否可见。

inst.layer
对象对象的引用,如果一个世界对象。

inst.behavior_insts[]
将每个行为的实例数组添加到对象类型中。

inst.inst
仅在行为实例中:这是对您的行为来说 应该修改的对象实例的引用。

公共实例函数

inst.set_bbox_changed()
在修改x , y , width , height或angle属性后,必须调用它来指示构造2对象的边界框已更改。

inst.update_bbox()
您必须在访问实例的bboxbquad成员之前调用它。 否则,它们的值将无效。

inst.add_bbox_changed_callback(f)
每当在inst上调用set_bbox_changed 时调用f(inst) 。 警告:这可能会导致很大的性能开销,所以谨慎使用。

inst.get_iid()
获取实例ID(IID)。 这是该实例所在的对象类型的实例数组中的从零开始的索引。 注意:您必须使用此功能才能获得IID,因为IID被懒惰地分配。.

inst.toString()
以“inst:type#uid”格式被覆写返回一个字符串,例如“inst:Player#0”。

 
慕雪白羊 2017-10-23

5-cr 函数

在其余的文档中,您可能已经注意到了对cr.vector2或cr.rect的引用。 这些和一些其他常用的功能在common_prelude.js中声明。 像运行时的其余部分一样,它们位于cr命名空间(构造运行时)中。 本节介绍这些类和功能。

cr.vector2

cr.vector2是一个简单的x,y位置(也可用作大小)。 创建于: new cr.vector2(x,y)

由于r52 ,不建议在运行时脚本中使用cr.vector2 。 使用许多临时vector2s会产生大量的垃圾收集器开销,这可能会导致某些浏览器的性能下降。 最好直接操作单独的x和y JavaScript数字。

cr.vector2.x
cr.vector2.y
矢量添加。 修改vector2 offset()被调用。

cr.vector2.offset(x, y)
矢量乘法。 修改vector2 mul()被调用。

cr.vector2.mul(x, y)
矢量乘法。 修改vector2 mul()被调用。

cr.rect

cr.rect是一个简单的2D矩形。 它是隐含的轴对齐的。 创建: new cr.rect(left, top, right, bottom)

创建许多rect对象可能导致垃圾收集器开销导致性能下降。 尽可能重新使用现有的直线对象。

cr.rect.left
cr.rect.top
cr.rect.right
cr.rect.bottom
定义矩形的位置。

cr.rect.set(left, top, right, bottom)
便利功能,可在一个调用中设置每个成员。

cr.rect.width()
cr.rect.height()
返回矩形的大小。

cr.rect.offset(x, y)
通过给定的x和y坐标偏移矩形。

cr.rect.intersects_rect(rc)
测试矩形是否与另一个cr.rect相交。

cr.rect.contains_pt(x, y)
测试点是否位于rect的内部或边界。

cr.quad

四边形只是形成四边形的四个2D点。 与cr.rect不同,四边形可以以任意角度表示矩形(非轴对齐)。 四边形不需要存储一个矩形 - 四个点中的每一个都可以有任何位置 - 但是在运行时,它们总是用于旋转矩形的目的。

Create a quad with: new cr.quad()

cr.quad.tlx
cr.quad.tly
cr.quad.trx
cr.quad.try_ (注意下划线避免使用 "try" 这个词)
cr.quad.brx
cr.quad.bry
cr.quad.blx
cr.quad.bly
构成四方的四点的坐标。 术语tl,tr,br和bl分别指“左上”,“右上”,“右下”和“左下”(对应于其表示未旋转矩形的位置)。

cr.quad.set_from_rect(rc)
设置四点以表示与给定cr.rect对象相同的形状。

cr.quad.set_from_rotated_rect(rc, a)
通过cr.rect设置四点以表示以弧度旋转的直角

cr.quad.offset(x, y)
偏移四分之一点

cr.quad.bounding_box(rc)
cr.rect rc设置为表示四边形的轴对齐边界框的rect。.

cr.quad.contains_pt(x, y)
测试点是否位于四边形内。

cr.quad.intersects_quad(q)
测试四边形是否与另一个cr.quad相交。

cr.ObjectSet

一个对象集表示一个数组的JavaScript对象,即每个对象只能存储一次,或者根本不存储,不要两次。 将对象添加到已经包含它的ObjectSet中没有任何作用。 ObjectSet使用.toString()方法区分对象,因此ObjectSet中的任何对象都必须具有唯一标识它的适当重载。 由于底层容器是一个javascript对象,因此性能优于使用数组和查找来存储唯一对象。

创建一个新的ObjectSet:new cr.ObjectSet()

cr.ObjectSet.contains(x)
测试集合是否包含对象x

cr.ObjectSet.add(x)
将对象x添加到集合(如果尚未存在),否则不起作用。

cr.ObjectSet.remove(x)
如果存在,从集合中删除对象x ,否则不起作用。

cr.ObjectSet.clear()
从集合中删除所有对象,将其返回到空状态。

cr.ObjectSet.isEmpty()
如果对象集处于空状态,则返回true。

cr.ObjectSet.count()
返回存储在集合中的对象数。

cr.ObjectSet.valuesRef()
返回对包含集合中所有对象的javascript数组的只读引用。 这比value()更快。

cr.ObjectSet.values()
返回一个包含集合中所有对象的副本的数组。 由于它返回一个副本,所以可以修改结果。

实用函数功能

以下功能并不完全相关,但通常是有用的。

cr.RGB(red, green, blue)
生成一个颜色值。 适用于颜色参数。

cr.arrayRemove(arr, index)
修改数组参数arr以删除索引处的元素。

cr.arrayFindRemove(arr, item)
修改数组参数arr以删除等于item的元素。

cr.clamp(x, a, b)
返回x ,或者如果x低于a ,或者如果x大于b则返回b

cr.to_radians(a)
返回从度数转换为弧度。

cr.to_degrees(a)
将从弧度转换为度数。

cr.clamp_angle_degrees(a)
返回一个包裹到范围[0,360)

cr.to_clamped_degrees(a)
将从弧度转换为度数并包裹到范围[0,360)。

cr.to_clamped_radians(a)
返回从度数转换为弧度,并将其包裹到范围 [0, 2pi).

cr.angleDiff(a1, a2)
返回a1a2之间的最小角度,以弧度表示。

cr.angleRotate(start, end, step)
返回startstep弧度旋转到end

cr.angleClockwise(a1, a2)
如果a2a1 (以弧度为单位)顺时针旋转最小角度,则返回true。

cr.xor(x, y)
返回xy逻辑XOR(JavaScript没有本机操作符)。

cr.lerp(a, b, x)
通过x线性地插入ab

cr.segments_intersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y)
测试线a1a2是否与线b1b2相交。

cr.seal(o)
密封对象o 。 如果不支持ECMAScript 5,则不起作用。

cr.freeze(o)
冻结对象o 。 如果不支持EXMAScript 5,则不起作用。

 

加入 indienova

  • 建立个人/工作室档案
  • 建立开发中的游戏档案
  • 关注个人/工作室动态
  • 寻找合作伙伴共同开发
  • 寻求线上发行
  • 更多服务……
登录/注册