核心
Game
构造函数。
语法:
new Game(width, height, renderer, parent, state, transparent, antialias, physicsConfig)
参数:
(1)width
画布的宽度。
数字或字符串类型,可选。默认为800。
如果以字符串的形式给出,该值必须在0到100之间,为百分比。如果没有指定父容器,则默认为浏览器窗口。
(2)height
画布的高度。
(3)renderer
指定渲染机制。值可以是Phaser.WEBGL
,Phaser.CANVAS
、Phaser.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
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 Packer和Shoebox工具创建。
image
语法:game.load.image(key,url)
(加载图片)
game
为new 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
。
对象发生碰撞时调用。object1
和object2
这两个对象将按照相同的顺序传递给这个函数,除非参数为组与精灵,精灵总是作为第一个参数。
(4)processCallback
函数,可选,默认为null
。
对两个对象在重叠时进行额外的检查,如果设置了这个函数,那么只有当这个函数返回true
时才会发生碰撞。object1
和object2
这两个对象将按照相同的顺序传递给这个函数,除非参数为组与精灵,精灵总是作为第一个参数。
(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.Input
是Phaser
上所有输入类型的输入管理器,如鼠标,键盘触摸和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