当前位置: 首页 > 工具软件 > Phaser > 使用案例 >

Phaser API整理

谷善
2023-12-01

核心

Game

构造函数。
语法:

new Game(width, height, renderer, parent, state, transparent, antialias, physicsConfig)

参数:
(1)width
画布的宽度。
数字或字符串类型,可选。默认为800。
如果以字符串的形式给出,该值必须在0到100之间,为百分比。如果没有指定父容器,则默认为浏览器窗口。
(2)height
画布的高度。
(3)renderer
指定渲染机制。值可以是Phaser.WEBGLPhaser.CANVASPhaser.AUTO(自动尝试使用WEBGL,如果浏览器或设备不支持,使用canvas)或者Phaser.HEADLESS(不进行渲染)。
可选。默认为Phaser.AUTO
(4)parent
想插入游戏画布的DOM元素。画布的父元素
可选。值为DOM元素本身或者是id。如果为空字符串,画布将被插入到body元素中
(5)state
默认的状态对象。
对象。可以是null。也可以是Phaser.state函数(预加载,创建,更新,渲染)。
(6)transparent
画布背景是否为透明。
布尔值。默认为false
(7)antialias
是否绘制为平滑纹理。
布尔值。默认为true
(8)physicsConfig
一个物理配置对象,在Physics world创建时传递。
对象。默认为null。

load

参照Loader

add

参照GameObjectFactory

World

world是我们想象的画布。一个game只有一个world,它是一个抽象的地方,所有的game对象都存在其中。可以是任意大小。

enableBody

布尔值。如果设置为true,这个group创建的或者加入进来的元素都将拥有一个可以启用的物理属性。如果子元素在设置这个属性之前就已经存在了,子元素的物理属性将不会被改变。默认的body类型由physicsBodyType控制。
语法:object.enableBody = Boolean
其中object为游戏元素对象。

height

数值。获取或设置game world的高度,永远不可能小于游戏画布的高度。
语法:game.world.height

scale

对象。值为一个点对象。默认为{x: 1, y: 1}。其中x代表水平轴放大倍数,y代表垂直轴放大倍数。继承new Point。设置值时调用setTo方法。

position

对象。同上scale。x值代表水平轴位置坐标,y值代表垂直轴位置坐标。继承new Point

加载

Loader

语法:new Loader(game)
Loader处理加载所有的外部内容,比如图片、声音、纹理地图集和数据文件。可以通过使用game.load快速访问。
Loader结合标签加载(例如图片元素)和XHR,并提供加载进度和完成后的回调。
默认支持并启用并行加载。(参考enableParallel
并行资源加载之前的行为有同步点控制,如withSyncPoint所讨论的。
纹理图集可以使用Texture PackerShoebox工具创建。

image

语法:game.load.image(key,url)(加载图片)

gamenew Game的实例。为当前正在运行的游戏。

(1)key
字符串,自定义图片的变量名,在后面代码中可直接引用

(2)url
字符串,图片路径

spritesheet

语法:spritesheet(key, url, frameWidth, frameHeight, frameMax, margin, spacing
将精灵图表添加到当前加载队列中。调用此方法后,文件不会立即加载。文件会被添加到队列中准备,直到加载器启动时才开始加载。精灵图表所包含的通常是动画的帧的图像,它们的尺寸全部相等,并按顺序排列。例如,如果帧大小为32x32,则精灵图标的每一帧都将是这个大小。有时,”sprite sheet”会被用来指纹理图集。
后面几个可选的参数还有疑问~~~???

参数:

(1)key
字符串,精灵图表的唯一关键词。

(2)url
字符串,精灵图表文件存放地址,如果没有定义或者为null,将会自动设置为<key>.png。比如key的值是'alien',URL就是'alien.png'

(3)frameWidth
数值,精灵图表中单个帧的宽度,以像素为单位。

(4)frameHeight
数值,精灵表中单个帧的高度。

(5)frameMax
数值,可选。默认值为-1。精灵图表中有几帧,如果没有指定,会将整个精灵图表分成几个帧。

(6)margin
数值,可选。默认为0。如果图片绘制中,整体精灵图像与图片边缘有间距,在这里指定间距。
(7)spacing
数值,可选。默认为0。如果帧与帧之间有间距,在这里指定间距。

enableParallel

如果设置为true(默认值),则启用并行下载。如果想禁用所有的并行下载,必须在加载任何资源之前就将其设置为false

游戏对象

GameObjectFactory

语法:new GameObjectFactory(game)

是创建许多常见游戏对象的快速方法。可以通过使用game.add快速访问。

sprite

语法:game.add.sprite(x, y, key, frame, group);

创建一个具有特定位置和元素关键值的一个新Sprite
最基本的Sprite由一组坐标和一个渲染时的纹理组成。也包含一些额外的属性,比如允许物理运动的Sprite.body,进行输入处理的Sprite.input,事件Sprite.events,动画Sprite.animations,相机剔除等等。

参数

(1)x
数值型。可选。默认值为0。
元素的x坐标。这个坐标是相对于元素可能在的任何父容器。

(2)y
数值型。可选。默认值为0。
元素的y坐标。这个坐标是相对于元素可能在的任何父容器。)

(3)key
字符串。可选。
通过这个对象渲染并显示的图像。如果是字符串类型,Phaser将会找到图片缓存的条目。

(4)frame
字符串或数值类型。可选。
如果引入的是纹理地图集或者是精灵图表,可以指定要使用的帧。使用帧ID的整数或者帧名称的字符串。

(5)group
Phaser.Group。可选
将对象添加到的组。如果没有指定,会被添加到world组。

group

语法:group(parent, name, addToStage, enableBody, physicsBodyType)
Group是显示对象的容器,允许快速合并,回收和碰撞检查。

参数

(1)parent
任何类型的值。可选。
如果有的话,这个组将会被添加到其中。如果设置为null,这个组将不会被添加到显示列表中。如果设置为undefined,将会默认被添加到World

(2)name
字符串类型。可选,默认值为'group'
这个组的名字。不可以在内部使用,但可以用于调试。

(3)addToStage
布尔值。可选。默认为false
如果设置为true,这个组将直接添加到Game.Stage而不是Game.World

(4)enableBody
布尔值。可选。默认为false
如果设置为true,所有使用Group.create或者Group.createMulitple创建的精灵元素都将创建一个physics body,用phaysicsBodyType改变body的类型。

(5)physicsBodyType
数值型。可选。默认为0
如果enableBody设置为true,这就是在新的Sprite上创建的物理体的类型。Phaser.Physics.ARCADE, Phaser.Physics.P2, Phaser.Physics.NINJA, 等等。

text

语法:text(x, y, text,style, group) → {Phaser.Text}
创建一个新的Text对象。返回值为一个新创建的Phaser.Text对象。

参数

(1)x
数值类型。可选,默认值为0。Text的x坐标。坐标是相对于文本所在的父容器来说的。

(2)y
数值类型。可选。默认值为0。Text的y坐标。

(3)text
字符串,可选。默认为''。需要显示的文本字符串。

(4)style
对象,可选。文本的样式属性。如字体、字体大小、颜色等。

(5)group
Phaser.Group,可选。添加文本对象的父组。如果没有指定,将会被添加到World组。

frame

设置或获取当前帧数。

文字

Text

语法:new Text(game,x,y,text,style)
创建一个新的游戏对象来展示文本。

参数

(1)game
Phaser.Game,必须。当前的游戏实例。

(2)x
数值。必须。新文本对象的x坐标值。

(3)y
数值,必须。新文本对象的y坐标值。

(4)text
字符串,必须。被写入的实际文本。

(5)style
对象。可选,文本的样式。

text

文本对象要展示的文本。使用\n插入回车并分割文本。文本将以当前设置的样式展示。

动画

AnimationManager

用于动画的添加、播放和更新。
快捷访问方式:sprite.animations
任何支持动画的游戏对象,例如Phaser.Sprite都包含一个AnimationManager实例。

add

语法:add(name, frames, frameRate, loop, useNumericIndex)
添加一个新动画。

参数

(1)name
字符串,必须。该精灵内动画的唯一名称。例如’run’ , ‘fire’ , ‘walk’

(2)frames
数组。可选。默认为null,表示使用所有帧。
一组数字或者字符串,与要添加到此动画的帧以及顺序相对应。例如[1, 2, 3]或者['run0', 'run1', 'run2']

(3)frameRate
数字,可选。默认为60。
动画播放的速度,以每秒的帧数给出。

(4)loop
布尔值。可选。默认为false
动画是否为循环播放。默认播放一次。

(5)useNumericIndex
布尔值。可选。默认为true
是否使用默认的数字索引或者字符串给定的帧。

play

语法:play(name, frameRate, loop, killOnComplete) → {Phaser.Animation}
基于给定的key播放动画。动画应该是之前通过animation.add添加的。如果请求的动画已经在播放,就会忽略这个请求。如果需要重置已经运行的动画,则直接在动画本身上运行。

参数

(1)name
字符串。必须。要播放的动画的名称。

(2)frameRate
数值。可选。默认为null
动画播放的帧率。速度为每秒的帧数。如果没有提供,则使用之前设置的动画帧率(在animation.add中设置的)

(3)loop
布尔值,可选,默认为false
动画是否循环播放。如果没有设置,就使用先前animation.add设置中的值。

(4)killOnComplete
布尔值,可选,默认为false
如果设置为true,动画完成后,父精灵元素将会被干掉。(只有loop = false时)

几何

Point

语法:new Point(x,y)
表示一个在二维坐标系中位置的点对象。其中x代表水平轴,y代表垂直轴。下面的代码表示在(0, 0)处创建一个点。

var myPoint = new Phaser.Point();

也可以使用它们作为2D矢量。

参数:

(1)x
数值型。可选。默认值为0。表示这一点的水平位置。
(2)y
数值型。可选。默认值为0.表示这一点的垂直位置。

setTo

语法:setTo(x,y)
将该点的x和y值设置为给定的值。如果省略y值,x值将应用于两者。如point.setTo(2)等于point.setTo(2,2)

物理

arcade

街机物理世界,包含街机物理相关的碰撞、重叠和运动方法。
快捷访问方式:game.physics.arcade

enable

语法:enable(object,children)
给指定的对象创建一个街机物理体。一个游戏对象任何时候只能有一个物理主体活动,并且在对象被销毁之前都不能改变。
参数
(1)object
对象、数组或者Phaser.Group。必须。
创建物理体的对象。也可以是一个数组或者一个对象组(子元素只要有body属性,都会被创建物理体)。
(2)children
布尔值。可选。默认为true
是否为这个对象的所有子元素穿件物理体。如果设置为true,将尽可能地减少显示列表。

collide

语法:collide(object1, object2, collideCallback, processCallback, callbackContext) → {boolean}

检查两个对象之间的碰撞。两个对象可以分别是精灵与精灵、精灵与组、组与组、精灵与地图图层或者组。第一和第二个参数可以是不同类型的对象或数组。如果传递了两个数组,第一个参数的内容将针对第二个参数的所有内容进行测试。对象之间也会自动分离,如果你不要求它们分离,那么使用ArcadePhysics.overlap代替。提供可选的回调函数processCallback,如果添加这个函数将会在两个对象碰撞之后调用,可以借此执行其余的检查。如果函数返回true会执行碰撞和分离,否则返回false,跳过。
collideCallback是一个可选函数,只有在两个精灵发生碰撞时才会被调用。如果之前已经设置了一个processCallback函数,processCallback需要返回true以便调用collideCallback(这个函数不是递归的,不会针对传递的对象的子元素进行测试,也就是说组中的成员不会再进行测试)。

参数

(1)object1
Phaser.Sprite | Phaser.Group | Phaser.Particles.Emitter | Phaser.TilemapLayer | array必须。
要检查的第一对象或对象数组。

(2)object2
必须。要检查的第二个对象或对象数组

(3)collideCallback
函数,可选。默认为null
对象发生碰撞时调用。object1object2这两个对象将按照相同的顺序传递给这个函数,除非参数为组与精灵,精灵总是作为第一个参数。

(4)processCallback
函数,可选,默认为null
对两个对象在重叠时进行额外的检查,如果设置了这个函数,那么只有当这个函数返回true时才会发生碰撞。object1object2这两个对象将按照相同的顺序传递给这个函数,除非参数为组与精灵,精灵总是作为第一个参数。

(5)callbackContext
对象,可选。运行回调的上下文。

overlap

语法:overlap(object1, object2, overlapCallback, processCallback, callbackContext) → {boolean}
检查两个游戏对象之间的重叠。不像碰撞物体会自动分开或者有任何物理应用,只是测试重叠结果。参数可参考collide

body

immovable

属性。布尔值。
设置为true将不会受到其它的影响,不会移动。

bounce

碰撞时的弹性。继承Point。使用示例如下:

bounce.y = 0.2;
bounce.x/y = 1;

gravity

重力。如果非零,将会覆盖任何世界的重力值,除非将Body.allowGravity设置为false。继承Point

velocity

速度,以像素/秒为单位。继承Point

collideWorldBounds

如果设置为true,那么这个对象在撞到世界的边界时会被反弹回这个世界。设置为false的话,对象在撞到世界边界时会离开这个世界。

输入

Input

Phaser.InputPhaser上所有输入类型的输入管理器,如鼠标,键盘触摸和MAPointer。输入管理器由核心游戏循环系统自动更新。
快捷访问方式:game.input

keyboard

参考Paser.Keyboard。键盘输入管理器。

Keyboard

Keyboard类监视键盘输入,分派键盘事件。注意:由于一些硬件的限制,无法处理某些键组合。点击查看更多信息。另外请注意,某些浏览器扩展可以禁用或覆盖Phaser的键盘处理。例如谷歌浏览器的扩展程序vimium会禁止Phaser使用D键。
快捷访问方式:game.input.keyboard

createCursorKeys()

创建并返回一个包含4个热键的对象,用于向上、向下、向左和向右。
{up: c.Key, down: c.Key, left: c.Key, right: c.Key}

具体属性值c.key参考Phaser.Key

Key

如果需要对特定键进行更详细的控制处理,可以创建并使用Phaser.Key对象。

isDown

键的按下状态。只要这个键保持按下状态,返回值就为true

 类似资料: