构造函数。
语法:
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。
参照Loader
world
是我们想象的画布。一个game
只有一个world
,它是一个抽象的地方,所有的game
对象都存在其中。可以是任意大小。
布尔值。如果设置为true
,这个group
创建的或者加入进来的元素都将拥有一个可以启用的物理属性。如果子元素在设置这个属性之前就已经存在了,子元素的物理属性将不会被改变。默认的body
类型由physicsBodyType
控制。
语法:object.enableBody = Boolean
其中object为游戏元素对象。
数值。获取或设置game world
的高度,永远不可能小于游戏画布的高度。
语法:game.world.height
对象。值为一个点对象。默认为{x: 1, y: 1}
。其中x代表水平轴放大倍数,y代表垂直轴放大倍数。继承new Point
。设置值时调用setTo
方法。
对象。同上scale
。x值代表水平轴位置坐标,y值代表垂直轴位置坐标。继承new Point
语法:new Loader(game)
Loader
处理加载所有的外部内容,比如图片、声音、纹理地图集和数据文件。可以通过使用game.load
快速访问。
Loader
结合标签加载(例如图片元素)和XHR,并提供加载进度和完成后的回调。
默认支持并启用并行加载。(参考enableParallel
)
并行资源加载之前的行为有同步点控制,如withSyncPoint
所讨论的。
纹理图集可以使用Texture Packer和Shoebox工具创建。
语法:game.load.image(key,url)
(加载图片)
game
为new Game
的实例。为当前正在运行的游戏。
(1)key
字符串,自定义图片的变量名,在后面代码中可直接引用
(2)url
字符串,图片路径
语法: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。如果帧与帧之间有间距,在这里指定间距。
如果设置为true
(默认值),则启用并行下载。如果想禁用所有的并行下载,必须在加载任何资源之前就将其设置为false
。
语法:new GameObjectFactory(game)
是创建许多常见游戏对象的快速方法。可以通过使用game.add
快速访问。
语法: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(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(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
组。
设置或获取当前帧数。
语法:new Text(game,x,y,text,style)
创建一个新的游戏对象来展示文本。
参数
(1)game
Phaser.Game
,必须。当前的游戏实例。
(2)x
数值。必须。新文本对象的x坐标值。
(3)y
数值,必须。新文本对象的y坐标值。
(4)text
字符串,必须。被写入的实际文本。
(5)style
对象。可选,文本的样式。
文本对象要展示的文本。使用\n
插入回车并分割文本。文本将以当前设置的样式展示。
用于动画的添加、播放和更新。
快捷访问方式:sprite.animations
任何支持动画的游戏对象,例如Phaser.Sprite
都包含一个AnimationManager
实例。
语法: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(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
时)
语法:new Point(x,y)
表示一个在二维坐标系中位置的点对象。其中x代表水平轴,y代表垂直轴。下面的代码表示在(0, 0)处创建一个点。
var myPoint = new Phaser.Point();
也可以使用它们作为2D矢量。
参数:
(1)x
数值型。可选。默认值为0。表示这一点的水平位置。
(2)y
数值型。可选。默认值为0.表示这一点的垂直位置。
语法:setTo(x,y)
将该点的x和y值设置为给定的值。如果省略y值,x值将应用于两者。如point.setTo(2)
等于point.setTo(2,2)
街机物理世界,包含街机物理相关的碰撞、重叠和运动方法。
快捷访问方式:game.physics.arcade
语法:enable(object,children)
给指定的对象创建一个街机物理体。一个游戏对象任何时候只能有一个物理主体活动,并且在对象被销毁之前都不能改变。
参数
(1)object
对象、数组或者Phaser.Group
。必须。
创建物理体的对象。也可以是一个数组或者一个对象组(子元素只要有body属性,都会被创建物理体)。
(2)children
布尔值。可选。默认为true
是否为这个对象的所有子元素穿件物理体。如果设置为true
,将尽可能地减少显示列表。
语法: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(object1, object2, overlapCallback, processCallback, callbackContext) → {boolean}
检查两个游戏对象之间的重叠。不像碰撞物体会自动分开或者有任何物理应用,只是测试重叠结果。参数可参考collide
属性。布尔值。
设置为true
将不会受到其它的影响,不会移动。
碰撞时的弹性。继承Point
。使用示例如下:
bounce.y = 0.2;
bounce.x/y = 1;
重力。如果非零,将会覆盖任何世界的重力值,除非将Body.allowGravity
设置为false
。继承Point
速度,以像素/秒为单位。继承Point
。
如果设置为true
,那么这个对象在撞到世界的边界时会被反弹回这个世界。设置为false
的话,对象在撞到世界边界时会离开这个世界。
Phaser.Input
是Phaser
上所有输入类型的输入管理器,如鼠标,键盘触摸和MAPointer
。输入管理器由核心游戏循环系统自动更新。
快捷访问方式:game.input
参考Paser.Keyboard
。键盘输入管理器。
Keyboard
类监视键盘输入,分派键盘事件。注意:由于一些硬件的限制,无法处理某些键组合。点击查看更多信息。另外请注意,某些浏览器扩展可以禁用或覆盖Phaser
的键盘处理。例如谷歌浏览器的扩展程序vimium
会禁止Phaser
使用D
键。
快捷访问方式:game.input.keyboard
创建并返回一个包含4个热键的对象,用于向上、向下、向左和向右。
{up: c.Key, down: c.Key, left: c.Key, right: c.Key}
具体属性值c.key
参考Phaser.Key
如果需要对特定键进行更详细的控制处理,可以创建并使用Phaser.Key
对象。
键的按下状态。只要这个键保持按下状态,返回值就为true