звук

Звуки в OpenFL. Форматы, кэширование для Android

Dima (deep): По моему вчерашнему вопросу про звуки в опенфл.
Для андройда надо звуки кешировать как я и предположил. Вот пример из фликселя https://github.com/HaxeFlixel/flixel/blob/dev/flixel/system/FlxAssets.hx...

         /**
         * Sound caching for android target
         */

        static public function cacheSounds():Void
        {
                #if android
                Reflect.callMethod(Assets, Reflect.field(Assets, "initialize"), []);
               
                var resourceClasses:Map<String, Dynamic> = cast Reflect.getProperty(Assets, "resourceClasses");
                var resourceTypes:Map<String, String> = cast Reflect.getProperty(Assets, "resourceTypes");
               
                if (resourceTypes != null)
                {
                        for (key in resourceTypes.keys())
                        {
                                if (resourceTypes.get(key) == "sound")
                                {        
                                        FlxG.sound.add(key);
                                }
                        }
                }
                #end
        }

Определение формата и загрузка аудио в HTML5

Полезная цитата из чата:
Yellow: Определение поддерживаемого формата аудио выглядит так в простейшем случае:

jsAudioType = '';
var aud = document.createElement('audio');
if (aud.canPlayType != null) {
    var c;
    if ((c = aud.canPlayType('audio/mpeg;')) != '' && c != 'no') {
        jsAudioType = 'mp3';
    } else if ((c = aud.canPlayType('audio/ogg; codecs="vorbis"')) != '' && c != 'no') {
        jsAudioType = 'ogg';
    }
}

после выполнения jsAudioType содержит 'mp3' или 'ogg' если они поддерживаются (в данном примере mp3 в приоритете) или пустую строку если нет. Логичным ходом является подгрузка лишь одного из двух типов аудио для каждого звука.

Реализация самого проигрывания может быть такой:
http://dl.dropboxusercontent.com/u/3594143/yal.cc/13-07/Audio.hx

Загрузка аудио выглядит где-то так:

var snd:HTMLMediaElement = cast document.createElement('audio');
var f = null;
f = function( e) {

RSS-материал