2017-12-19 21 views
1

ich versuche, einen FLAC-Datei-Player mit Appcelerator und Hyperloop mit dem OrigamiEngineHyperloop Eventlistener Beispiel

Es funktioniert, wie ich spielen kann, machen, anhalten und die Spieler zu stoppen. Aber ich kann den Modus "addEventListener" nicht ausführen. Ich lese einige Beispiele und etwas über die Delegiertenmethoden. Aber ich bin kein nativer iOS-Coder und alle meine Versuche sind fehlgeschlagen.

Kann mir jemand sagen, wie man den Eventlistener für die didChangeState Funktion kodiert?

Das ist mein leider nicht funktionierenden Code

//Application Window Component Constructor 
function ApplicationWindow() { 

Ti.Media.audioSessionCategory = Ti.Media.AUDIO_SESSION_CATEGORY_PLAYBACK; 

var NSURL = require('Foundation/NSURL'); 
var ORGMEngine = require('OrigamiEngine/ORGMEngine'); 
var audioPlayer = new ORGMEngine(); 

var self = Ti.UI.createWindow({ 
    backgroundColor : '#ffffff' 
}); 

var startStopButton = Ti.UI.createButton({ 
    title : 'Start/Stop Streaming', 
    top : 100, 
    width : 200, 
    height : 40 
}); 

var pauseResumeButton = Ti.UI.createButton({ 
    title : 'Pause/Resume Streaming', 
    top : 140, 
    width : 200, 
    height : 40, 
    enabled : false 
}); 

self.add(startStopButton); 
self.add(pauseResumeButton); 

startStopButton.addEventListener('click', function() { 

    console.log('audioPlayer.currentState: ' + audioPlayer.currentState); 

    // When paused, playing returns false. 
    // If both are false, playback is stopped. 
    if (audioPlayer.currentState == 1) { 
     audioPlayer.stop(); 
     audioPlayer.release(); 
     pauseResumeButton.enabled = false; 
    } else { 
     var url = NSURL.URLWithString('http://faq.fantasticlibrary.de/test.flac'); 
     audioPlayer.playUrl(url); 
     setTimeout(function(){ 
      console.log(audioPlayer.metadata()); 
     }, 10000); 
     pauseResumeButton.enabled = true; 
    } 
}); 

pauseResumeButton.addEventListener('click', function() { 
    console.log('audioPlayer.currentState: ' + audioPlayer.currentState); 

    if (audioPlayer.currentState == 1) { 
     audioPlayer.pause(); 
    } else { 
     audioPlayer.resume(); 
    } 
}); 

var StateChangeDelegate = Hyperloop.defineClass('MyDelegate', 'NSObject', ['ORGMEngineDelegate']); 

StateChangeDelegate.addMethod({ 
selector: 'engine:didChangeState:', 
instance: true, 
arguments: ['ORGMEngine', 'ORGMEngineState'], 
callback: function (engine, state) { 
    if (this.didChangeState) { 
     this.didChangeState(engine, state); 
    } 
} 
}); 

var delegate = new StateChangeDelegate(); 

delegate.didChangeState = function(ORMEngine,state) { 
    console.log('does the state change???'); 
}; 

self.addEventListener('close', function() { 
    audioPlayer.stop(); 
    audioPlayer.release(); 
}); 

return self; 
} 

module.exports = ApplicationWindow; 

Lauf Demo-Projekt zum Download: http://lightapps.de/files/flactest.zip

Antwort

0

Probieren Sie es aus:

delegate.on('didChangeState', function(ORMEngine,state){ 
    console.log('does the state change???'); 
}); 

ich das im Moment nicht testen können, aber Ich denke, das wird für dich funktionieren.