首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hyperloop eventlistener示例

Hyperloop eventlistener示例
EN

Stack Overflow用户
提问于 2017-12-19 18:20:04
回答 1查看 194关注 0票数 1

我尝试用OrigamiEngineAppceleratorHyperloop制作一个flac文件播放器

它的工作原理是我可以播放、暂停和停止播放器。但是我不能让"addEventListener“模式工作。我读了一些关于委托方法的例子和一些东西。但是我不是一个原生的iOS程序员,我所有的尝试都失败了。

谁能告诉我如何编写didChangeState函数的eventlistener?

不幸的是,这是我不能工作的代码

代码语言:javascript
复制
//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

EN

回答 1

Stack Overflow用户

发布于 2017-12-30 02:32:23

试试看:

代码语言:javascript
复制
delegate.on('didChangeState', function(ORMEngine,state){
    console.log('does the state change???');
});

我现在不能测试它,但我想这对你来说是可行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47884735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档