2017-12-19 9 views
1

私は、遊ぶ一時停止し、プレーヤーを停止することができますよう、それが動作OrigamiEngineハイパーループのEventListener例

を使用してAppceleratorHyperloopとFLACファイルプレーヤーを作ってみます。しかし、私は "addEventListener"モードを動作させることはできません。私はデリゲートメソッドについていくつかの例と何かを読んでいます。しかし、私はネイティブiOSコーダーではなく、すべての試行に失敗しました。

didChangeState機能のイベントリスナーをコードする方法を教えてもらえますか?

これは私、残念ながら動作しないコードダウンロードするデモプロジェクトを実行

//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; 

です:それを試してみてくださいhttp://lightapps.de/files/flactest.zip

答えて

0

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

私は一瞬でこれをテストすることはできませんが、私はそれがあなたのために働くと思う。

関連する問題