LoaderPlugin

.Loader. LoaderPlugin

加载器处理加载所有外部内容,如图像,声音,纹理图谱和数据文件. 你通常通过场景中的`this.load`与它交互.场景可以有一个 `preload` 方法,它总是 在场景 `create` 方法之前调用,允许您预加载场景可能需要的资源. 如果你从 `Scene.preload` 之外调用任何 `this.load` 方法,那么你需要启动加载器 您可以通过调用 `Loader.start()` .它只在场景预加载期间自动启动. 加载器使用标签加载的组合(例如.音频元素)和XHR,并提供进度和完成事件. 默认情况下,文件是并行加载的.可以在游戏配置中控制并发连接数. 一旦加载程序开始加载,您仍然可以向其中添加文件.这些可以作为加载器的结果被注入 事件,正在加载的文件类型(如包文件)或其他外部事件.只要装载机还没有完成 在运行时,只需向其中添加一个新文件,就可以确保它被添加到当前队列中. 每个场景都有自己的加载器实例,它们绑定到创建它们的场景.然而, 由加载器加载的资产被放入全局游戏级缓存.例如,加载一个XML文件会将 文件在 `Game.cache.xml` 里面,可以从你游戏的每一个场景访问,不管谁负责 装载它.纹理也是如此.加载到一个场景中的纹理立即可用于所有其他场景 在你的游戏里. 加载程序通过使用自定义文件类型工作.它们存储在文件类型管理器中,文件类型管理器将它们注入加载器 当它被实例化时.您可以通过扩展文件或多文件类来创建自己的自定义文件类型. 查看这些文件了解更多详细信息.

Constructor

new LoaderPlugin(scene)

Since:
  • 3.0.0
Parameters:
Name Type Description
scene Phaser.Scene 拥有此加载器实例的场景.

Extends

Members

baseURL :string

Since:
  • 3.0.0
Default Value:
  • ''
如果您想在任何资源的路径前附加一个网址,您可以在这里设置它. 如果允许在游戏代码之外配置资产基础url,这将非常有用. 如果您直接设置此属性,则它必须以 `/` 结尾.或者,调用 `SetBaseURl()`,它会为您完成.
Type:
  • string

cacheManager :Phaser.Cache.CacheManager

Since:
  • 3.7.0
对全局缓存管理器的引用.
Type:

crossOrigin :string

Since:
  • 3.0.0
应用于加载图像的交叉原点值.通常需要设置为 `anonymous` .
Type:
  • string

inflight :Phaser.Structs.Set.<Phaser.Loader.File>

Since:
  • 3.0.0
文件在加载过程中存储在该集中. 成功加载后,它们被移动到`队列`集合. 加载过程结束时,该集合将为空.
Type:

list :Phaser.Structs.Set.<Phaser.Loader.File>

Since:
  • 3.0.0
当文件通过 `addFile` 添加到加载器时,它们被放置在该集合中. 当它们开始加载时,它们被移动到 `inflight` 设置,并假设成功 加载到 `queue` 集,以便进一步处理. 加载过程结束时,该集合将为空.
Type:

maxParallelDownloads :number

Since:
  • 3.0.0
一次尝试获取的并发/并行资源的数量. 旧浏览器限制每个域6个请求;现代的,尤其是HTTP/2的,完全不限制. 默认值为32,但您可以在游戏配置中更改此值,或者在加载程序启动前更改此属性.
Type:
  • number

path :string

Since:
  • 3.0.0
Default Value:
  • ''
如果设置了 `path` 的值,则该值位于给定的任何_relative_file路径之前.例如: ```javascript this.load.path = "images/sprites/"; this.load.image("ball", "ball.png"); this.load.image("tree", "level1/oaktree.png"); this.load.image("boom", "http://server.com/explode.png"); ``` 将从 `images/sprites/ball.png` 加载 `ball` 文件,并从 `images/sprites/level 1/oak tree.png` 但文件 `boom` 将从网址加载 因为它是一个绝对的网址. 请注意,路径是在文件名之前添加的,但在基本URL之后添加. 如果您直接设置此属性,则它必须以 `/` 结尾.或者,调用 `SetPath()`,它会为您完成.
Type:
  • string

prefix :string

Since:
  • 3.7.0
Default Value:
  • ''
一个可选前缀,自动附加在每个文件键的开头. 如果前缀是 `MENU.` ,并且您用键 `Background` 加载图像,则结果键将是 `MENU.Background` . 可以直接设置这个,或者调用 `Loader.setPrefix()` .然后,它将影响添加到加载器的每个文件 从那时起.它不会改变加载队列中已经存在的任何文件.
Type:
  • string

progress :number

Since:
  • 3.0.0
Default Value:
  • 0
当前加载队列的进度,以0到1之间的浮点值表示. 这将在文件加载完成后自动更新. 请注意,如果在加载过程中向当前加载队列添加内容,该值可能会再次下降.
Type:
  • number

queue :Phaser.Structs.Set.<Phaser.Loader.File>

Since:
  • 3.0.0
文件在处理过程中存储在该集中. 如果过程成功,他们将被移动到最终目的地,可能是 缓存或纹理管理器. 在加载过程结束时,该集合将为空.
Type:

scene :Phaser.Scene

Since:
  • 3.0.0
拥有此加载器实例的场景.
Type:

(protected) sceneManager :Phaser.Scenes.SceneManager

Since:
  • 3.16.0
对全局场景管理器的引用.
Type:

(readonly) state :number

Since:
  • 3.0.0
加载程序的当前状态.
Type:
  • number

systems :Phaser.Scenes.Systems

Since:
  • 3.0.0
场景系统参考.
Type:

textureManager :Phaser.Textures.TextureManager

Since:
  • 3.7.0
对全局纹理管理器的引用.
Type:

totalComplete :number

Since:
  • 3.7.0
Default Value:
  • 0
最近一次加载期间成功加载的文件总数. 当您调用 `Loader.start` 时,该值被重置.
Type:
  • number

totalFailed :number

Since:
  • 3.7.0
Default Value:
  • 0
最近一次加载期间未能加载的文件总数. 当您调用 `Loader.start` 时,该值被重置.
Type:
  • number

totalToLoad :number

Since:
  • 3.0.0
Default Value:
  • 0
要加载的文件总数.它可能并不总是准确的,因为您可能会在此过程中添加到加载器中 特别是当你加载一个包文件时.因此,该值可以改变,但在大多数情况下保持不变.
Type:
  • number

xhr :Phaser.Types.Loader.XHRSettingsObject

Since:
  • 3.0.0
xhr特定的全局设置(可以基于每个文件覆盖)
Type:

Methods

addFile(file)

Since:
  • 3.0.0
将文件或文件数组添加到加载队列中. 该文件必须是 `zPhaser.Loader.File` 的实例或扩展它的类.装载机将检查钥匙 文件使用的键不会与加载程序,飞行队列或目标缓存中的任何其他键冲突. 如果允许,它会将文件添加到待处理列表中,读取以开始加载.或者,如果负载已经 已启动,准备将下一批文件从列表中拉入飞行队列. 您通常不应该直接调用此方法,而应该使用加载器方法之一,如 `image` 或 `atlas` , 但是,只要给它的文件格式良好,您就可以调用它.
Parameters:
Name Type Description
file Phaser.Loader.File | Array.<Phaser.Loader.File> 要添加到加载队列的文件或文件数组.
Fires:

addListener(event, fn, contextopt) → {this}

Since:
  • 3.0.0
Inherited From:
为给定事件添加侦听器.
Parameters:
Name Type Attributes Default Description
event string | symbol 事件名称.
fn function 侦听器函数.
context * <optional>
this 用来调用侦听器的上下文.
Returns:
`this`.
Type
this

addPack(pack, packKeyopt) → {boolean}

Since:
  • 3.7.0
获取一个格式良好,完全解析的包文件对象,并将其条目添加到加载队列中.通常你不会打电话 这个方法,而是使用 `Loader.pack` 并提供一个JSON文件的路径,该文件保存 打包数据.然而,如果你已经准备好了数据,你可以把它传递给这个方法. 您也可以提供一个可选键.如果您这样做了,那么它只会将该部分包中的条目添加到 加载队列.如果没有指定,它将添加它找到的所有条目.有关包文件格式的更多详细信息 请参见 `LoaderPlugin.pack` 方法.
Parameters:
Name Type Attributes Description
pack any 要解析的打包文件数据及其每个条目都要添加到加载队列中.
packKey string <optional>
从包文件数据中使用的可选密钥.
Returns:
如果队列中添加了任何文件,则为 `true` ,否则为 `false` .
Type
boolean

animation(key, urlopt, dataKeyopt, xhrSettingsopt) → {this}

Since:
  • 3.0.0
将动画JSON数据文件或动画JSON文件数组添加到当前加载队列. 您可以从场景的 `preload` 中调用此方法,以及您希望加载的任何其他文件: ```javascript function preload () { this.load.animation('baddieAnims', 'files/BaddieAnims.json'); } ``` 文件是**不是* *马上加载的.它被添加到队列中,准备在加载程序启动时进行加载, 或者如果它已经在运行,则在下一个空闲加载槽可用时.如果您 从场景的 `preload` 方法或相关的回调中调用它.因为文件已排队 这意味着您不能在调用此方法后立即使用文件,而必须等待文件完成. 相位器场景的典型流程是在场景的`preload`方法中加载资产,然后当 场景的 `create` 方法被调用,你可以保证所有这些资产已经准备好使用 加载. 如果您从 `preload` 之外调用此函数,则您有责任在之后启动加载程序并进行监控 知道何时使用资产是安全的.请看看相位器.Loader.LoaderPlugin类获取更多详细信息. 密钥必须是唯一的字符串.它用于在成功加载时将文件添加到全局JSON缓存中. 就正在加载的文件和JSON缓存中已经存在的文件而言,该密钥应该是唯一的. 使用已使用的密钥加载文件将导致警告.如果您希望替换现有文件 然后,在加载新的缓存之前,先从JSON缓存中删除它. 除了传递参数,您还可以传递配置对象,例如: ```javascript this.load.animation({ key: 'baddieAnims', url: 'files/BaddieAnims.json' }); ``` 有关更多详细信息,请参见 `Phaser.TYPes.Loader.FileTypes.JSonFILEconfig` 的文档. 一旦文件完成加载,它将自动传递给全局动画管理器的 `fromJSON` 方法. 这将解析所有JSON数据,并从中创建动画数据.这个过程发生在最后 一旦加载队列中的所有其他文件都已完成.这样做的原因是允许您加载 动画数据和它在同一个加载调用中依赖的图像. 一旦动画数据被解析,您就可以使用该数据播放动画了. 有关格式和回放的更多详细信息,请参见动画管理器的 `fromJSON` 方法. 您也可以使用其键从缓存中访问原始动画数据: ```javascript this.load.animation('baddieAnims', 'files/BaddieAnims.json'); // and later in your game ... var data = this.cache.json.get('baddieAnims'); ``` 如果你在加载器中指定了一个前缀,通过 `Loader.setPrefix` 这个值将被添加到这个文件中 钥匙.例如,如果前缀是 `LEVEL1.` ,而关键字是 `Waves` ,则最后一个关键字将是 `LEVEL1.waves` ,并且 这就是从JSON缓存中检索文本的方法. URL可以是相对的,也可以是绝对的.如果该网址是相对的, `Loader.baseURL` 和 `Loader.path` 值将被置于其前面. 如果没有指定网址,加载程序将获取密钥,并由此创建一个文件名.例如,如果键是 `data` 并且没有给出网址,那么加载器将把网址设置为 `data.json` .它将总是添加 `.json` 作为扩展,尽管 如果使用对象而不是方法参数,则可以覆盖这一点.如果您不希望此操作,请提供一个网址. 您也可以选择提供一个 `dataKey` 来使用.这允许您只提取JSON的一部分并将其存储在缓存中, 而不是整个文件.例如,如果您的JSON数据具有这样的结构: ```json { "level1": { "baddies": { "aliens": {}, "boss": {} } }, "level2": {}, "level3": {} } ``` 如果你只想从 `boss` 数据中创建动画,那么你可以将 `level1.baddies.boss` 作为 `dataKey` 传递. 注意:只有当JSON文件类型已经内置到Phaser中时,才能加载这种类型的文件. 它在默认版本中可用,但可以从自定义版本中排除.
Parameters:
Name Type Attributes Description
key string | Phaser.Types.Loader.FileTypes.JSONFileConfig | Array.<Phaser.Types.Loader.FileTypes.JSONFileConfig> 用于此文件,文件配置对象或它们的数组的键.
url string <optional>
要从中加载此文件的绝对或相对网址.如果未定义或 `null` ,它将被设置为 `.json` ,即.如果 `key` 是 `alien` ,那么网址将是 `alien.json` .
dataKey string <optional>
当动画JSON文件加载时,只有该属性将存储在缓存中,并用于创建动画数据.
xhrSettings Phaser.Types.Loader.XHRSettingsObject <optional>
XHR设置配置对象.用于替换装载机的默认XHR设置.
Fires:
  • Phaser.Loader.LoaderPlugin#event:ADD
Returns:
加载程序实例.
Type
this

aseprite(key, textureURLopt, atlasURLopt, textureXhrSettingsopt, atlasXhrSettingsopt) → {this}

Since:
  • 3.50.0
Aseprite是一个强大的动画精灵编辑器和像素艺术工具. 你可以在https://www.aseprite.org/找到更多的细节 将基于JSON的无菌动画或动画数组添加到当前加载队列中. 您可以从场景的 `preload` 中调用此方法,以及您希望加载的任何其他文件: ```javascript function preload () { this.load.aseprite('gladiator', 'images/Gladiator.png', 'images/Gladiator.json'); } ``` 文件是**不是* *马上加载的.它被添加到队列中,准备在加载程序启动时进行加载, 或者如果它已经在运行,则在下一个空闲加载槽可用时.如果您 从场景的 `preload` 方法或相关的回调中调用它.因为文件已排队 这意味着您不能在调用此方法后立即使用文件,而必须等待文件完成. 相位器场景的典型流程是在场景的`preload`方法中加载资产,然后当 场景的 `create` 方法被调用,你可以保证所有这些资产已经准备好使用 加载. 如果您从 `preload` 之外调用此函数,则您有责任在之后启动加载程序并进行监控 知道何时使用资产是安全的.请看看相位器.Loader.LoaderPlugin类获取更多详细信息. 要在无菌状态下导出兼容的JSON文件,请执行以下操作: 1. 转到文件-导出精灵工作表 2. 在**布局* *选项卡上: 2a.将 `Sheet type` 设置为 `Packed` 2b.将 `Constraints` 设置为 `None` 2c.选中`合并副本`复选框 3. 在**雪碧* *标签上: 3a.将 `Layers` 设置为 `Visible layers` 3b.将 `Frames` 设置为 `All frames` ,除非您只想导出标签子集 4. 在**边框* *选项卡上: 4a.检查 `Trim Sprite` 和 `Trim Cells` 选项 4b.确保 `Border Padding` , `Spacing` 和 `Inner Padding` 都> 0(通常1就够了) 5. 在**输出* *选项卡上: 5a.检查`输出文件`,给你的图像一个名称,并确保你选择`png文件`作为文件类型 5b.检查 `JSON Data` ,并为您的JSON文件命名 5c.JSON数据类型可以是散列或数组,Phaser不介意. 5d.确保在元选项中选中了`Tags` 5e.在 `Item Filename` 输入框中,确保它只显示 `{frame}` 而不显示其他内容. 6. 单击导出 这是用无菌1.2.25测试的. 这将导出一个png和json文件,您可以使用Aseprite Loader加载,即.: Phaser可以加载所有常见的图像类型:png,jpg,gif和浏览器可以本地处理的任何其他格式. 密钥必须是唯一的字符串.它用于在成功加载后将文件添加到全局纹理管理器中. 就正在加载的文件和纹理管理器中已经存在的文件而言,该键应该是唯一的. 使用已使用的密钥加载文件将导致警告.如果您希望替换现有文件 然后,在加载新的纹理管理器之前,先从纹理管理器中删除它. 除了传递参数,您还可以传递配置对象,例如: ```javascript this.load.aseprite({ key: 'gladiator', textureURL: 'images/Gladiator.png', atlasURL: 'images/Gladiator.json' }); ``` 有关更多详细信息,请参见 `Phaser.TYPes.Loader.FileTypes.AsperItefileConfig` 的文档. 您也可以传递一个格式良好的JSON对象,而不是传递JSON数据的网址. 加载后,您可以在场景中使用 `atlas` 键调用此方法: ```javascript this.anims.createFromAseprite('paladin'); ``` JSON中定义的任何动画现在都可以在Phaser中使用,你可以播放它们 通过他们的标签名.例如,如果你的无菌时间线上有一个名为 `War Cry` 的动画, 你可以在相位器中使用标签名来播放它: ```javascript this.add.sprite(400, 300).play('War Cry'); ``` 调用此方法时,您可以选择提供一个标记名数组,并且只提供那些动画 将被创建.例如: ```javascript this.anims.createFromAseprite('paladin', [ 'step', 'War Cry', 'Magnum Break' ]); ``` 这将只创建定义的3个动画.请注意,标记名称区分大小写. 如果你在加载器中指定了一个前缀,通过 `Loader.setPrefix` 这个值将被添加到这个文件中 钥匙.例如,如果前缀是 `MENU.` ,而关键字是 `Background` ,则最后一个关键字将是 `MENU.Background` 和 这是您将用来从纹理管理器中检索图像的. URL可以是相对的,也可以是绝对的.如果该网址是相对的, `Loader.baseURL` 和 `Loader.path` 值将被置于其前面. 如果没有指定网址,加载程序将获取密钥,并由此创建一个文件名.例如,如果密钥是 `alien` 并且没有给出网址,那么加载器将把网址设置为 `alien.png` .它将始终添加 `.png` 作为扩展名,尽管 如果使用对象而不是方法参数,则可以覆盖这一点.如果您不希望此操作,请提供一个网址. 注意:只有在相位器中内置了无菌文件类型时,才能加载这种类型的文件. 它在默认版本中可用,但可以从自定义版本中排除.
Parameters:
Name Type Attributes Description
key string | Phaser.Types.Loader.FileTypes.AsepriteFileConfig | Array.<Phaser.Types.Loader.FileTypes.AsepriteFileConfig> 用于此文件,文件配置对象或它们的数组的键.
textureURL string | Array.<string> <optional>
要从中加载纹理图像文件的绝对或相对网址.如果未定义或 `null` ,它将被设置为 `.png` ,即.如果 `key` 是 `alien` ,那么网址将是 `alien.png` .
atlasURL object | string <optional>
加载纹理图集json数据文件的绝对或相对URL.如果未定义或 `null` ,它将被设置为 `.json` ,即.如果 `key` 是 `alien` ,那么网址将是 `alien.json` .或者,格式良好的JSON对象.
textureXhrSettings Phaser.Types.Loader.XHRSettingsObject <optional>
地图集图像文件的XHR设置配置对象.用于替换装载机的默认XHR设置.
atlasXhrSettings Phaser.Types.Loader.XHRSettingsObject <optional>
图集json文件的XHR设置配置对象.用于替换装载机的默认XHR设置.
Fires:
  • Phaser.Loader.LoaderPlugin#event:ADD
Returns:
加载程序实例.
Type
this

atlas(key, textureURLopt, atlasURLopt, textureXhrSettingsopt, atlasXhrSettingsopt) → {this}

Since:
  • 3.0.0
将基于JSON的纹理图谱或图谱数组添加到当前加载队列中. 您可以从场景的 `preload` 中调用此方法,以及您希望加载的任何其他文件: ```javascript function preload () { this.load.atlas('mainmenu', 'images/MainMenu.png', 'images/MainMenu.json'); } ``` 文件是**不是* *马上加载的.它被添加到队列中,准备在加载程序启动时进行加载, 或者如果它已经在运行,则在下一个空闲加载槽可用时.如果您 从场景的 `preload` 方法或相关的回调中调用它.因为文件已排队 这意味着您不能在调用此方法后立即使用文件,而必须等待文件完成. 相位器场景的典型流程是在场景的`preload`方法中加载资产,然后当 场景的 `create` 方法被调用,你可以保证所有这些资产已经准备好使用 加载. 如果您从 `preload` 之外调用此函数,则您有责任在之后启动加载程序并进行监控 知道何时使用资产是安全的.请看看相位器.Loader.LoaderPlugin类获取更多详细信息. Phaser希望地图集数据以JSON文件的形式提供,使用JSON哈希或JSON数组格式. 这些文件是由纹理打包器,鞋盒和Adobe Flash / Animate等软件创建的. 如果您正在使用纹理打包器,并且已经启用了多图集支持,那么请使用相位器多图集加载器 而不是这个. Phaser可以加载所有常见的图像类型:png,jpg,gif和浏览器可以本地处理的任何其他格式. 密钥必须是唯一的字符串.它用于在成功加载后将文件添加到全局纹理管理器中. 就正在加载的文件和纹理管理器中已经存在的文件而言,该键应该是唯一的. 使用已使用的密钥加载文件将导致警告.如果您希望替换现有文件 然后,在加载新的纹理管理器之前,先从纹理管理器中删除它. 除了传递参数,您还可以传递配置对象,例如: ```javascript this.load.atlas({ key: 'mainmenu', textureURL: 'images/MainMenu.png', atlasURL: 'images/MainMenu.json' }); ``` 有关更多详细信息,请参见 `Phaser.TYPes.Loader.FileTypes.AtlasjsonFileConfig` 的文档. 您也可以传递一个格式良好的JSON对象,而不是传递地图集JSON数据的网址. 一旦地图集完成加载,您可以使用其中的帧作为游戏对象的纹理,方法是参照其关键点: ```javascript this.load.atlas('mainmenu', 'images/MainMenu.png', 'images/MainMenu.json'); // and later in your game ... this.add.image(x, y, 'mainmenu', 'background'); ``` 要获得一个图册中所有可用帧的列表,请咨询你的纹理图册软件. 如果你在加载器中指定了一个前缀,通过 `Loader.setPrefix` 这个值将被添加到这个文件中 钥匙.例如,如果前缀是 `MENU.` ,而关键字是 `Background` ,则最后一个关键字将是 `MENU.Background` 和 这是您将用来从纹理管理器中检索图像的. URL可以是相对的,也可以是绝对的.如果该网址是相对的, `Loader.baseURL` 和 `Loader.path` 值将被置于其前面. 如果没有指定网址,加载程序将获取密钥,并由此创建一个文件名.例如,如果密钥是 `alien` 并且没有给出网址,那么加载器将把网址设置为 `alien.png` .它将始终添加 `.png` 作为扩展