【说明】
这是根据Phaser3 API文档中各类之页面右侧的目录整理的,略作说明,或增加代码示例。可做便览之用。
Phaser 3 API Documentation - Class: Container#
Container的属性、方法与Sprite重合的部分,不再注释。
一个游戏对象加入容器后,即从显示列表中删除,而加入容器内部的显示列表,由容器负责它的渲染;位置也是相对于容器位置而言的。
容器可以嵌套。
容器可以添加遮罩或作为遮罩,但是子项不能添加遮罩,即遮罩不能叠加。
容器可以添加输入,但是因为它没有纹理,所以你必须提供一个shape作为点击区域。容器的子项也能添加输入,并独立于容器。
容器可以赋予物理体。不过,如果子项也有物理属性,并且容器或任何前辈对象不是位于0x0位置的话,那么你可能碰到意外的结果,比如物理体偏置。不把带物理属性的子项考虑进来,是因为需要过多的运算。
要注意容器带来的额外问题。嵌套越深,消耗越会升级,尤其是在输入事件上。尽可能避免使用。
参考Group
。
Phaser.GameObjects. Container#
new Container(scene [, x] [, y] [, children]) Extends
Members#
active :boolean#
alpha :number#
alphaBottomLeft :number#
alphaBottomRight :number#
alphaTopLeft :number#
alphaTopRight :number#
angle :integer#
blendMode :Phaser.BlendModes|string#
body :object|Phaser.Physics.Arcade.Body|Phaser.Physics.Impact.Body #
cameraFilter :number#
data :Phaser.Data.DataManager#
depth :number#
displayHeight :number#
参考getBounds
。
displayOriginX :number #
displayOriginY :number #
displayWidth :number#
参考getBounds
。
exclusive :boolean#
first :Phaser.GameObjects.GameObject #
height :number#
参考getBounds
。
ignoreDestroy :boolean#
input :Phaser.Input.InteractiveObject #
last :Phaser.GameObjects.GameObject #
length :integer #
list :Array. #
localTransform :Phaser.GameObjects.Components.TransformMatrix#
mask :Phaser.Display.Masks.BitmapMask|Phaser.Display.Masks.GeometryMask#
游戏对象渲染时所使用的遮罩。
maxSize :integer#
name :string#
next :Phaser.GameObjects.GameObject #
originX :number #
originY :number #
parentContainer :Phaser.GameObjects.Container#
position :integer#
previous :Phaser.GameObjects.GameObject #
renderFlags :integer#
rotation :number#
scaleX :number#
scaleY :number#
scene :Phaser.Scene #
scrollFactorX :number#
scrollFactorY :number#
tabIndex :integer#
type :string#
visible :boolean#
w :number#
width :number#
参考getBounds
。
x :number#
y :number#
z :number#
Methods#
add(child)#
addAt(child [, index])#
addListener(event, fn [, context])#
bringToTop(child)#
clearAlpha()#
clearMask( [destroyMask])#
清除正在使用的遮罩。
count(property, value [, startIndex] [, endIndex])#
createBitmapMask( [renderable])#
生成并返回一个Bitmap遮罩,以供游戏对象(包括自身)使用。
注意:Bitmap遮罩仅在WebGL中有效,而Geometry遮罩在WebGL和Canvas二者中有效。
需要传入一个可渲染游戏对象的引用。可渲染对象指渲染时使用纹理的对象,如Image, Sprite, Render Texture, BitmapText.
如果不传入可渲染对象,而本游戏对象自身有一个纹理,那么就会使用这个纹理;也就是说,你可以用任何可渲染游戏对象生成Bitmap遮罩。
createGeometryMask( [graphics])#
生成并返回Geometry遮罩,,以供游戏对象(包括自身)使用。
需要传入一个Graphics游戏对象的引用。
如果不传入可渲染对象,而本游戏对象自身即是Graphics对象的实例,那么就会使用它自身来生成遮罩;也就是说,你可以用任何Graphics游戏对象生成Geometry遮罩。
destroy( [fromScene])#
disableInteractive()#
each(callback [, context] [, args])#
emit(event [, args])#
eventNames()#
exists(child)#
getAll( [property] [, value] [, startIndex] [, endIndex])#
getAt(index)#
getBounds( [output])#
取得容器边界。
目前(2018-11-22),可能出于性能的考虑,Container的width、height、displayWidth、displayHeight没有暴露,需要通过getBounds
方法自行处理。当子项比较多时,getBounds
很耗费算力,所以不宜频繁计算,不宜在tween
中变动容器的长宽。 请参考。(TODO: scale也有这样的禁忌吗?)
1 2 3 |
|
getBoundsTransformMatrix()#
getByName(name)#
getData(key)#
getFirst( [property] [, value] [, startIndex] [, endIndex])#
getIndex(child)#
getIndexList()#
getLocalTransformMatrix( [tempMatrix])#
getRandom( [startIndex] [, length])#
getWorldTransformMatrix( [tempMatrix] [, parentMatrix])#
iterate(callback [, context] [, args])#
listenerCount(event)#
listeners(event)#
moveDown(child)#
moveTo(child, index)#
moveUp(child)#
off(event, fn, context, once)#
on(event, fn [, context])#
once(event, fn [, context])#
pointToContainer(source [, output])#
preDestroy() #
remove(child [, destroyChild])#
removeAll( [destroyChild])#
removeAllListeners( [event])#
removeAt(index [, destroyChild])#
removeBetween( [startIndex] [, endIndex] [, destroyChild])#
removeInteractive()#
removeListener(event, fn, context, once)#
replace(oldChild, newChild [, destroyChild])#
reverse()#
sendToBack(child)#
setActive(value)#
setAll(property, value [, startIndex] [, endIndex])#
setAlpha( [topLeft] [, topRight] [, bottomLeft] [, bottomRight])#
setAngle( [degrees])#
setBlendMode(value)#
setData(key, data)#
setDataEnabled()#
setDepth(value)#
setDisplaySize(width, height)#
setExclusive( [value])#
设置排他状态。
value类型为boolean,
如果设为false,那么容器对子项的管理不是排他的,因此可以快速复制游戏对象;但是这些子项的输入事件、物理体将不再有效。
@GameObjects/Container/Non Exclusive Containers
1 2 3 4 5 6 7 8 |
|
setInteractive( [shape] [, callback] [, dropZone])#
setMask(mask)#
设置遮罩。
遮罩需预先生成,可以是GeometryMask或BitmapMask。注意:Bitmap遮罩仅在WebGL中有效,而Geometry遮罩在WebGL和Canvas二者中有效。
如果原本就有遮罩,那么会立即替换。
遮罩是在全局空间中定位的,而不是相对于所要应用至的对象。——这是为了多个对象可以分享同一个遮罩。
遮罩对物理系统和输入检测没有影响。遮罩仅仅是渲染组件,只决定渲染过程中你能看到什么,不能看到什么。
setName(value)#
setPosition( [x] [, y] [, z] [, w])#
setRandomPosition( [x] [, y] [, width] [, height])#
setRotation( [radians])#
setScale(x [, y])#
setScrollFactor(x [, y])#
setSize(width, height)#
setVisible(value)#
setW( [value])#
setX( [value])#
setY( [value])#
setZ( [value])#
shuffle()#
shutdown()#
sort(property)#
swap(child1, child2)#
toJSON()#
update( [args])#
willRender(camera)#
published from :Phaser 3 API Documentation - Class: Container