wise9/enchant.js — Issue #28: Game.assetsでDataURIを使用可能にする
Author: eller86
Created: 2012-02-22 12:51:53+00:00
State: open

先日のleapfestではありがとうございました。LTで使ったDataURIについての機能追加を送らせていただきます。
Safari 5.1.2 on OSX 10.7.2でのみ動作を確認しています。

```diff
diff --git a/enchant.js b/enchant.js
index 9323d4a..a25f2d9 100755
--- a/enchant.js
+++ b/enchant.js
@@ -836,8 +836,7 @@ enchant.Game = enchant.Class.create(enchant.EventTarget, {
load: function(src, callback) {
if (callback == null) callback = function() {};

- var ext = src.match(/\.\w+$/)[0];
- if (ext) ext = ext.slice(1).toLowerCase();
+ var ext = findExt(src);
switch (ext) {
case 'jpg':
case 'gif':
@@ -2561,9 +2560,9 @@ enchant.Sound = enchant.Class.create(enchant.EventTarget, {
*/
enchant.Sound.load = function(src, type) {
if (type == null) {
- var ext = src.match(/\.\w+$/)[0];
+ var ext = findExt(src);
if (ext) {
- type = 'audio/' + ext.slice(1).toLowerCase();
+ type = 'audio/' + ext;
} else {
type = '';
}
@@ -2627,4 +2626,16 @@ enchant.Sound.load = function(src, type) {

enchant.Sound.enabledInMobileSafari = false;

+function findExt(path) {
+ var matched = path.match(/\.\w+$/);
+ if (matched && matched.length > 0) {
+ return matched[0].slice(1).toLowerCase();
+ }
+
+ // for data URI
+ if (path.indexOf('data:') === 0) {
+ return path.split(/[\/;]/)[1].toLowerCase();
+ }
+ return null;
+}
})();
```