Skip to content

Commit 4d976e5

Browse files
added Loader method for loading audio files
added AudioFile class
1 parent b37c588 commit 4d976e5

2 files changed

Lines changed: 120 additions & 1 deletion

File tree

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
var Class = require('../../utils/Class');
2+
var File = require('../File');
3+
var Audio = require('../../device/Audio');
4+
var GetFastValue = require('../../utils/object/GetFastValue');
5+
6+
// Phaser.Loader.FileTypes.AudioFile
7+
8+
var AudioFile = new Class({
9+
10+
Extends: File
11+
12+
});
13+
14+
AudioFile.create = function (loader, key, urls, config, xhrSettings) {
15+
16+
var url = AudioFile.findAudioURL(urls);
17+
18+
if (!url)
19+
{
20+
// TODO log no supported types
21+
return;
22+
}
23+
24+
if (Audio.webAudio)
25+
{
26+
27+
}
28+
else if (Audio.audioData)
29+
{
30+
31+
}
32+
else
33+
{
34+
// TODO bail if sounds are disabled and print message
35+
return;
36+
}
37+
38+
};
39+
40+
// this.load.audio('sound', 'assets/audio/booom.ogg', config, xhrSettings);
41+
//
42+
// this.load.audio('sound',
43+
// [
44+
// 'assets/audio/booom.ogg',
45+
// 'assets/audio/booom.m4a',
46+
// 'assets/audio/booom.mp3'
47+
// ],
48+
// config, xhrSettings);
49+
//
50+
// this.load.audio('sound',
51+
// {
52+
// uri: 'assets/audio/boooooom',
53+
// type: 'ogg'
54+
// },
55+
// config, xhrSettings);
56+
//
57+
// this.load.audio('sound',
58+
// [
59+
// {
60+
// uri: 'assets/audio/booooooo',
61+
// type: 'ogg'
62+
// },
63+
// {
64+
// uri: 'assets/audio/boooooom',
65+
// type: 'mp3'
66+
// }
67+
// ],
68+
// config, xhrSettings);
69+
//
70+
// this.load.audio('sound',
71+
// [
72+
// {
73+
// uri: 'assets/audio/booooooo',
74+
// type: 'ogg'
75+
// },
76+
// 'assets/audio/booom.m4a',
77+
// {
78+
// uri: 'assets/audio/boooooom',
79+
// type: 'mp3'
80+
// }
81+
// ],
82+
// config, xhrSettings);
83+
AudioFile.findAudioURL = function (urls)
84+
{
85+
if (urls.constructor !== Array)
86+
{
87+
urls = [urls];
88+
}
89+
90+
for (var i = 0; i < urls.length; i++)
91+
{
92+
var url = GetFastValue(urls[i], 'uri', urls[i]);
93+
94+
if (url.indexOf('blob:') === 0 || url.indexOf('data:') === 0)
95+
{
96+
return url;
97+
}
98+
99+
var audioType = url.match(/\.([^\.?]+)($|\?)/);
100+
101+
audioType = GetFastValue(urls[i], 'type', audioType ? audioType[1] : '').toLowerCase();
102+
103+
if (Audio[audioType])
104+
{
105+
return url;
106+
}
107+
}
108+
109+
return null;
110+
};
111+
112+
module.exports = AudioFile;

v3/src/scene/plugins/Loader.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ var SVGFile = require('../../loader/filetypes/SVGFile');
1616
var TextFile = require('../../loader/filetypes/TextFile');
1717
var UnityAtlasFile = require('../../loader/filetypes/UnityAtlasFile');
1818
var XMLFile = require('../../loader/filetypes/XMLFile');
19+
var AudioFile = require('../../loader/filetypes/AudioFile');
1920

2021
var Loader = new Class({
2122

@@ -88,6 +89,12 @@ var Loader = new Class({
8889
return SpriteSheet.create(this, key, url, config, xhrSettings);
8990
},
9091

92+
// config can include: instances
93+
audio: function (key, urls, config, xhrSettings)
94+
{
95+
return AudioFile.create(this, key, urls, config, xhrSettings)
96+
},
97+
9198
// ---------------------------------------------------
9299
// Multi-File Loaders
93100
// ---------------------------------------------------
@@ -220,7 +227,7 @@ var Loader = new Class({
220227

221228
return entry;
222229
}
223-
230+
224231
});
225232

226233
module.exports = Loader;

0 commit comments

Comments
 (0)