您好,欢迎访问三七文档
Phaser类简介Phaser中文本文由Phaser中文()根据Phaser官方文档整理翻译而成。Phaser中文汇集了Phaser最全的中文文档、实例教程和游戏Demo,是学习游戏编程,提高编程技巧,分享经验的最佳网站。Phaser介绍Phaser是一款专门用于桌面及移动HTML52D游戏开发的开源免费框架,提供JavaScript和TypeScript双重支持,内置游戏对象的物理属性,采用Pixi.js引擎以加快Canvas和WebGL渲染,基于浏览器支持可自由切换。本文将对以下类进行简单介绍:Core核心Game游戏Group组World世界Loader载入器Time时间Camera摄像机StateManager状态管理器TweenManager补间动画管理器SoundManager声音管理器InputManager输入管理器ScaleManager缩放管理器GameObjects游戏对象Factory(game.add)工厂Creator(game.make)创建者Sprite精灵Image图像Sound声音Emitter发射器Particle粒子Text文本Tween补间动画BitmapText位图文字Tilemap瓦片地图BitmapData位图数据RetroFont复古字体Button按钮Animation动画Graphics图形RenderTexture渲染纹理TileSprite瓦片精灵Geometry几何图形Circle圆Rectangle矩形Point点Line直线Ellipse椭圆Polygon多边形Physics物理引擎ArcadePhysicsArcade物理引擎Body刚体P2PhysicsP2物理引擎Body刚体Spring弹簧CollisionGroup碰撞组ContactMaterial接触物质NinjaPhysicsNinja物理引擎Body刚体Input输入InputHandler输入处理Pointer指针Mouse鼠标Keyboard键盘Key按键Gamepad游戏手柄核心CoreGameGame对象是游戏的核心,它提供了一个快速调用公共函数和处理启动过程的渠道。GroupGroup(组)是一个用于显示各种对象(包括Sprites和Images)的容器。Group将显示/场景图组成了逻辑树的结构,应用到Group上的变换会应用到它的子对象上。例如。当Group被移动/旋转/缩放时,所有的子对象同时也会被移动/旋转/缩放。此外,Group也提供了对快速对象池和对象回收的支持。Group可以显示对象,同时也可能作为其他组的子对象。World一个游戏只拥有一个World(世界)。World是一个抽象空间,所有游戏对象都生存在World中。它它可以是任意尺寸大小,不受舞台的边界限制。你可以通过相机来查看世界。所有的游戏对象都以基于世界的坐标而生存在World中。默认情况下,World的尺寸大小与舞台一致。LoaderLoader(加载器)用于处理所有外部内容的加载,例如图像、声音、纹理图集和数据文件。它把Image()载入和XMLHttpRequest对象结合在一起,提供了载入进度显示和载入完成的回调功能。Time这是一个核心内部游戏时钟。它维护了一个消逝时间,计算已消逝的时间值。这可用于游戏对象的运动、补间动画,还处理一个标准的定时器池。要创建一个普通的定时事件,可使用Phaser.Timer。CameraCamera(摄像机)是观察游戏世界的视野。它有一个确定的位置和大小,并且只渲染在它视野范围内的对象。游戏启动时候,会自动创建一个跟舞台相同大小的摄像机。通过改变Phaser.Camera.x/y的值可以在世界中移动摄像机。StateManager状态管理器负责载入、设置、切换游戏状态。TweenManagerPhaser.Game维护了一个单一的TweenManager实例,所有补间动画对象都是由它创建和更新的。补间被钩入游戏时钟中,使系统暂停,并根据游戏状态而调整。TweenManager主要是基于tween.js()。区别是:补间动画属于游戏的TweenManager实例,而不是一个全局TWEEN对象。它提供了一些包装了信号的回调方法,还有一些用于修补关于属性和完成错误的问题。完整的贡献者名单请参见:。SoundManager声音管理器负责通过传统的HTML音频标签或Web音频(需浏览器支持)来播放音频。注意:在Linux的Firefox25及以上版本中,如果你在about:config中禁用了media.gstreamer,则无法播放mp3或m4a文件。音频文件的类型及其编码方式是极其重要的。不是所有的浏览器能播放所有的格式。这里有一份很好的参考:如果你在某个页面上没有正确的刷新Phaser游戏(例如在AngularJS项目中),你会很快从AudioContext节点跑飞掉。如果在创建game前在window对象上创建了一个全局的PhaserGlobal变量,则当game销毁时,当前的AudioContext会保存到window.PhaserGlobal.audioContext,并且在game重启后重用这个变量。InputManagerPhaser.Input是所有输入设备的管理器,包括鼠标、键盘、触摸和MSPointer。输入管理器在主游戏循环中会自动被更新。ScaleManagerScaleManager对象控制了缩放、大小变化和游戏大小与显示画布之间的对齐操作。游戏大小是游戏的逻辑尺寸,显示画布作为HTML元素也有其自己的尺寸。缩放的计算受包围在外面的父容器的大小(显示画布的父容器/元素的大小)影响很大。画布的父容器的有效CSS规则对于缩放管理器的操作来说扮演了一个很重要的角色。显示画布或者游戏尺寸,依赖于缩放模式,被更新以使得能够最好的适应父容器尺寸。在全屏模式或者parentIsWindow模式,父容器尺寸就是可视化视图(参见getParentBounds)。父容器和显示画布包括以下准则:给游戏画布的父元素添加样式以控制你固执父容器的大小,并因此而控制显示画布的大小和布局。父元素的CSS样式应该有效地运用最大(和最小)的边界行为。父元素不能应用padding。如果确实需要使用padding,那么把它应用父容器的父容器,或者使用margin。不应该改变或者指定显示画布的CSS样式(例如边缘留空,大小),因为这可能会被ScaleManager更新掉。游戏对象GameObjectsFactory(game.add)GameObjectFactory是一个使用game.add来创建很多常见游戏对象的快速方法。创建出来的对象会自动被添加到适当的管理器、世界、或者用户指定的组中。Creator(game.make)GameObjectCreator是一个创建游戏对象的快速方法,但是并并不会把对象添加到游戏世界中。对象创建者可以被game.make访问。Sprite精灵是游戏的生命体,几乎可用于所有的可视化物体。基本上,精灵是有一套坐标和渲染在画布上的纹理所组成。精灵也包括了一些额外的属性,例如物理移动(通过Sprite.body)、输入处理(通过Sprite.input)、事件(通过Sprite.events)、动画(通过Sprite.animations),摄像机选择等等。Image图像是一个轻量级对象,你可以使用它来显示任何不需要物理引擎或者动画的任务东西。它可以旋转、缩放、剪切,并接收输入事件。它可以完美的用于标识、背景、简单的按钮和其他非精灵类图形。Sound声音类EmitterEmitter是一个使用Arcade物理引擎的轻量级粒子发射器。它可用于一次性的爆炸,或者像雨、火那样的连续性效果。它所有真正做的就是在设定的时间间隔里发射出Particle(粒子)对象,并相应的修正他们的位置和速度。ParticleParticles(粒子)是精灵的扩展类,它由粒子发射器(例如Phaser.Particles.Arcade.Emitter)发射出去。Text文本对象创建了一个本地的隐藏Canvas对象,先把文本渲染上去,然后再把纹理渲染上去。正因为如此,你只能显示当前已经被载入的,且对于浏览器有效的字体。它不会为你载入字体。这里有一个列表罗列了不同移动浏览器支持的默认字体:(补间)允许你在一个指定的时间周期内更改一个目标对象的一个或多个属性。这个可用于让移动精灵alpha通道变化(即透明度变化)、缩放或者移动。使用Tween.to或者Tween.from来设置tween值。你可以在同一个Tween上多次调用Tween.to来对同一个对象创建多个tween。补充一下,以这种方式指定的tween会变成子tween,并且会按次序播放。你可以使用Tween.timeScale和Tween.reverse来控制这个Tween及其所有子tween的回放。BitmapTextBitmapText(位图文字)对象包含了一个纹理文件和一个描述字体布局的XML文件。在Windows上,你可以使用免费软件BMFont:在OSX上,我们建议使用GlyphDesigner:对于网页,有很好的Littera:(瓦片地图)可以用一个JSON文件或者CSV文件来填充数据。第一个参数是传入一个缓存键值。当要使用瓦片数据时,你只需要提供这个键值。当使用CSV数据时,你必须提供这个键值和瓦片的宽、高数据。如果你想创建一个空的瓦片地图,想后面再填充,你可以不指定任何参数然后再调用Tilemap.create,或者也可以在这里传入地图和瓦片的尺寸。注意,所有的瓦片地图在计算尺寸时都使用一个基本的瓦片尺寸,但是TilemapLayer可能会有自己独立的优先级更高的瓦片尺寸。瓦片地图要使用TilemapLayer来渲染并显示出来。它不会自己直接添加到显示列表里。一个地图可能会有多个层次。你可以对地图数据进行复制、粘贴、填充操作,也可以把瓦片移来移去。BitmapDataBitmapData(位图数据)对象包含了一个Canvas元素,你可以通过一些普通的Canvas上下文操作在这个元素上绘制任何你喜欢的东西。单一的BitmapData可以被用来作为一个或多个图像或者精灵的纹理。所以,如果你需要动态创建精灵的纹理,这是个很好的选择。RetroFontRetroFont(复古字体)类似于BitmapFont(位图字体),他使用纹理来渲染字体。然而与BitmapFont不同的是,RetroFont里的每一个文字的尺寸都是一样的。这个与spritesheet(精灵表)类似。你通常可以在一些老的8位、16位游戏中查到字体表。Button按钮是一个特殊类型的精灵,他能自动建立对指针事件的处理。这里是四种按钮响应的状态:Over(经过)-指针移动经过按钮。这个也就是hover;Out(离开)-指针曾经移动经过过按钮,现在离开了按钮;Down(按下)-指针被按键按下。例如在触摸屏上触摸,或者用鼠标点击;Up(抬起)-指针在被按钮按下后又释放了。Animation一个Animation(动画)实例包含了一个单一的动画和用于播放的空间。它通过AnimationManager来创建,由多个Animation.Frame对象组成,属于某个单一的游戏对象(例如:精灵)。
本文标题:Phaser类简介
链接地址:https://www.777doc.com/doc-5529196 .html