跳转至

【说明】

这是根据Phaser3 API文档中各类之页面右侧的目录整理的,略作说明,或增加代码示例。可做便览之用。

Phaser 3 API Documentation - Class: LoaderPlugin#

加载器(加载插件)用于加载所有外部资源。 主要是通过场景的this.load属性来使用它。 在场景中的preload(总是先于create方法调用)方法中使用加载器加载本场景所需资源。如果在preload之外使用加载器,则需自行启动加载器并监听完成事件。 加载器混用tag loading(如Audio元素)和XHR,提供进度、完成事件。 缺省情况下文件下载时并行的。并发连接数量可以在GameConfiguration中配置。 加载器启动后,在未完成之前仍可添加下载文件。 每个场景都有自己的加载器实例。但是已经加载的资源放置在game全局缓存中,各场景都能取用。 可以加载自定义文件类型(通过扩展FileMultiFile类)。

Phaser.Loader. LoaderPlugin#

new LoaderPlugin(scene)

Extends

Members#

baseURL :string#

链接基。会附加到所有链接之前。如果直接给该属性赋值,最后需要代“/”,通过setBaseURL()方法赋值则会自动加上。参考path

cacheManager :Phaser.Cache.CacheManager#

指向缓存管理器。

crossOrigin :string#

跨域设置值。常用于加载图像,常设为“anonymous”。 (ah21:如果本机加载出现跨域问题,请确认服务器与浏览器两处域名字面完全相同,127.0.0.1, localhost, 0.0.0.0三者间会构成跨域。)

inflight :Phaser.Structs.Set.#

addFile加入的条目首先存在list集合,开始加载后移到inflight,加载成功后移到queue

list :Phaser.Structs.Set.#

addFile加入的条目首先存在list集合,开始加载后移到inflight,加载成功后移到queue

maxParallelDownloads :integer#

最大并发/并行下载数。

path :string#

路径,会附加到所有文件相对路径之前,baseURL之后。不影响绝对文件路径。 如果直接设置此属性值,注意最后带“/”,通过setPath()设置则会自动加上。 参考baseURL

prefix :string#

资源key的统一前缀。比如MENU.,可以与区分场景、避免键值重复引起警告。只影响设置后加入加载器的资源,不会影响已进入加载队列的文件。

progress :number#

加载进度,0-1之间的数字。如果加载过程中增加下载文件,会重新计算。

queue :Phaser.Structs.Set.#

队列。addFile加入的条目首先存在list集合,开始加载后移到inflight,加载成功后移到queue。成功后会移到缓存Cache 或纹理管理器Texture Manager。

scene :Phaser.Scene#

指向所属场景。

state :integer#

systems :Phaser.Scenes.Systems#

指向所属场景的System。

textureManager :Phaser.Textures.TextureManager#

指向全局的文理管理器。

totalComplete :integer#

最近的总完成数。调用Loader.start时会重置。下项类此。

totalFailed :integer#

totalToLoad :integer#

需要加载的数量。不一定很精确,特别是加载文件包时。

xhr :XHRSettingsObject#

xhr全局设置对象。可每个文件单独重写。

Methods#

addFile(file)#

把文件加入队列。一般不直接使用,而是通过Loader.image之类的方法。

addListener(event, fn [, context])#

增加某事件的监听器。

addPack(data [, packKey])#

把包裹加入队列。一般不直接使用,而是用Loader.pack

animation(key [, url] [, dataKey] [, xhrSettings])#

加载动画数据。一般不直接使用,而是通过this.load.animation()来使用。

1
2
3
4
5
6
7
this.load.animation('baddieAnims1', 'files/BaddieAnims.json');
this.load.animation({
    key: 'baddieAnims2',
    // 如果不提供url,会用key + ".json"自动生成
    url: 'files/BaddieAnims.json'
    // 还可以通过"dataKey: 'level1.baddies.boss'"这样的设置使用JSON的指定数据
});

atlas(key [, textureURL] [, atlasURL] [, textureXhrSettings] [, atlasXhrSettings])#

加载JSON Hash或者JSON Array格式的图集,比如用Texture Packer, Shoebox, Adobe Flash / Animate生成的。还可以加载Normal maps。 如果Texture Packer的multi-atlas,则请用Phaser Multi Atlas loader加载。

1
2
3
4
5
6
7
this.load.atlas('mainmenu1', 'images/MainMenu.png', 'images/MainMenu.json');
this.load.atlas({
    key: 'mainmenu2',
    textureURL: 'images/MainMenu.png',
    atlasURL: 'images/MainMenu.json'
});
this.add.image(x, y, 'mainmenu1', 'background');

如使用Texture Packer,要改JSON文件编码为utf-8无签名;取消“允许旋转”。

atlasXML(key [, textureURL] [, atlasURL] [, textureXhrSettings] [, atlasXhrSettings])#

加载XML图集,如用Shoebox和Adobe Flash / Animate生成的。还可以加载Normal maps。

audio(key [, urls] [, config] [, xhrSettings])#

加载Audio或HTML5Audio文件、文件数组。 如果游戏设置了禁用声音,则不会加载音频文件。

1
2
3
4
5
6
// 同一声音提供不同格式(最常用的是ogg, mp3, m4a)文件以便适配多种浏览器
this.load.audio('title1', [ 'music/Title.ogg', 'music/Title.mp3', 'music/Title.m4a' ]);
this.load.audio({
    key: 'title2',
    url: [ 'music/Title.ogg', 'music/Title.mp3', 'music/Title.m4a' ]
});

audioSprite(key, jsonURL [, audioURL] [, audioConfig] [, audioXhrSettings] [, jsonXhrSettings])#

加载音频精灵。音频精灵可以把多个音频文件合并到一个文件,并在配套JSON文件中指明起讫位置、回放参数等。 音频精灵JSON文件应符合audiosprite生成器的标准。比如合并TTS导出的音节读音:audiosprite --output audiosprite --export "ogg,m4a,mp3" --bitrate 32 --samplerate 16000 --gap 0.1 *.mp3,把所有".mp3"文件制成音频精灵,以"audiosprite"名字导出"ogg,m4a,mp3"三种格式,并设置采样率、比特率。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
this.load.audioSprite('kyobi1', 'kyobi.json', [
    'kyobi.ogg',
    'kyobi.mp3',
    'kyobi.m4a'
]);
// JSON文件中包含 'resource'对象时可省略资源名称列表。**实测此法无效,原因未知。**
this.load.audioSprite('kyobi2', 'kyobi.json');
// and later in your game ...
// 播放精灵的一个title,播放后自动删除。
this.sound.playAudioSprite("kyobi1", "title");
// 生成实例后选择title播放。**AudioSpriteSound定义有问题,需确认为any以免编译错误。**
const music: Phaser.Sound.BaseSound.AudioSpriteSound = this.sound.addAudioSprite("kyobi1");
(music as any).play("title");

binary(key [, url] [, dataType] [, xhrSettings])#

加载二进制文件。

bitmapFont(key [, textureURL] [, fontDataURL] [, textureXhrSettings] [, fontDataXhrSettings])#

加载bitmap字体。 适用于Angelcode Bitmap Font Generator, Littera, Glyph Designer等软件生成的XML文件格式。 支持normal maps。

emit(event [, args])#

发出事件,调用事件监听器。

eventNames()#

返回已经注册的事件列表。

fileProcessComplete(file)#

内部方法。加载完成是自动调用。

flagForRemoval(file)#

加入到标记以备删除的队列。

glsl(key [, url] [, xhrSettings])#

加载GLSL文件(OpenGL Shading Language,目前是纯文本文件)。

html(key [, url] [, xhrSettings])#

加载HTML文件、文件数组。

htmlTexture(key [, url] [, width] [, height] [, xhrSettings])#

加载HTML纹理文件、文件数组。

image(key [, url] [, xhrSettings])#

加载图像。

isLoading()#

取值:是否正在加载、或正在处理加载文件。

isReady()#

取值:是否已经准备好,可以开始加载了。

json(key [, url] [, dataKey] [, xhrSettings])#

加载JSON文件。可以通过dataKey指定只抽取一部分。

keyExists(file)#

检查key是否已经存在,以避免冲突。

listenerCount(event)#

返回某事件的监听器数量。

listeners(event)#

返回某事件的监听器数组。

loadComplete()#

内部方法,加载完成(包括错误项已经停止)时调用。

multiatlas(key [, atlasURL] [, path] [, baseURL] [, atlasXhrSettings])#

多重图集。参考atlas。 适用于Texture Packer 4.6.3以上版本选定Phaser 3导出选项时生成的多重图集。

nextFile(file, success)#

内部方法,自动调用。

off(event, fn, context, once)#

关闭某事件的监听器。

on(event, fn [, context])#

为某事件添加一个监听器。

once(event, fn [, context])#

为某事件添加一次性监听器。

pack(key [, url] [, dataKey] [, xhrSettings])#

加载JSON文件包裹或包裹数组。JSON文件包裹是包含需要加载的文件细节的JSON文件。可以通过dataKey指定只提取JSON文件中的一部分。

plugin(key [, url] [, start] [, mapping] [, xhrSettings])#

加载插件脚本文件或文件数组。

removeAllListeners( [event])#

移除所有监听器。

removeListener(event, fn, context, once)#

移除某事件的监听器。

reset()#

重置加载器,放弃未下载完成的,清理list,重置base URL, path和prefix。

save(data [, filename] [, filetype])#

通过浏览器下载功能保存数据到文件。

saveJSON(data [, filename])#

通过浏览器下载功能保存JSON数据到文件。

scenePlugin(key [, url] [, systemKey] [, sceneKey] [, xhrSettings])#

加载场景插件脚本。

script(key [, url] [, xhrSettings])#

加载脚本文件。

setBaseURL( [url])#

setCORS( [crossOrigin])#

setPath( [path])#

setPrefix( [prefix])#

spritesheet(key [, url] [, frameConfig] [, xhrSettings])#

加载精灵单子。支持normal maps。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
this.load.spritesheet({
    key: 'bot1',
    url: 'images/robot.png',
    frameConfig: {
        frameWidth: 32,
        frameHeight: 38,
        startFrame: 0,
        endFrame: 8
    }
});
this.load.spritesheet('bot2', 'images/robot.png', { frameWidth: 32, frameHeight: 38 });
// and later in your game ...
this.add.image(x, y, 'bot1', 0);

start()#

开始加载。会重置进度、数量,发出start事件。 场景的preload函数中加载会自动开始。此外需自行调用,以开始下载。 如果正在加载,此方法径直返回。

svg(key [, url] [, svgConfig] [, xhrSettings])#

加载svg文件。注意提供新尺寸,以便在生成纹理时在清晰度和内存消耗之间取得平衡。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
this.load.svg('morty1', 'images/Morty.svg', { width: 300, height: 600 });
this.load.svg('morty2', 'images/Morty.svg', { scale: 2.5 });
this.load.svg({
    key: 'morty3',
    url: 'images/Morty.svg',
    svgConfig: {
        // 如果同时提供宽、高和scale,后者具有优先权
        width: 300,
        height: 600,
        scale: 2.5
    }
});

text(key [, url] [, xhrSettings])#

加载文本文件。

1
2
3
4
5
6
7
this.load.text({
    key: 'story1',
    url: 'files/IntroStory.txt'
});
this.load.text('story2', 'files/IntroStory.txt');
// and later in your game ...
var data = this.cache.text.get('story1');

tilemapCSV(key [, url] [, xhrSettings])#

加载CSV砖块地图文件。

1
2
3
4
5
6
7
this.load.tilemapCSV({
    key: 'level1',
    url: 'maps/Level1.csv'
});
this.load.tilemapCSV('level2', 'maps/Level2.csv');
// and later in your game ...
var map = this.make.tilemap({ key: 'level1' });

tilemapImpact(key [, url] [, xhrSettings])#

加载Impact.js砖块地图文件。

tilemapTiledJSON(key [, url] [, xhrSettings])#

加载Tiled JSON砖块地图文件。

1
2
3
4
5
6
7
this.load.tilemapTiledJSON({
    key: 'level1',
    url: 'maps/Level1.json'
});
this.load.tilemapTiledJSON('level1', 'maps/Level1.json');
// and later in your game ...
var map = this.make.tilemap({ key: 'level1' });

unityAtlas(key [, textureURL] [, atlasURL] [, textureXhrSettings] [, atlasXhrSettings])#

加载Unity YAML纹理图集。

update()#

内部方法。

updateProgress()#

更新进度值,发出进度事件。自动调用。

xml(key [, url] [, xhrSettings])#

加载XML文件。

Events#

addFileEvent#

completeEvent#

loadErrorEvent#

loadEvent#

progressEvent#

startEvent#

published from :Phaser 3 API Documentation - Class: LoaderPlugin