Apple tvOS Javascript在选择时停止视频自动播放

时间:2015-10-20 23:11:46

标签: tvos

使用MenuBar模板并使菜单正常工作。但是,假设您将鼠标悬停在视频等顶级菜单项上。视频页面会自动加载到演示区域中。但是,当您选择视频时,它会在用户点击之前开始自动播放,从而禁止用户选择除第一个视频之外的其他视频。我只是希望视频不要自动播放并等待用户的输入。我尝试了一个eventListener,但它被忽略了。我无所适从。

Presenter.js

{'propertyA': {},
 'propertyB': 13579,
 'id': 6},

--- application.js ---

    var Presenter = {
    defaultPresenter: function(xml) {
        if(this.loadingIndicatorVisible) {
            navigationDocument.replaceDocument(xml, this.loadingIndicator);
            this.loadingIndicatorVisible = false;
        } else {
            navigationDocument.pushDocument(xml);
        }
    },

    modalDialogPresenter: function(xml) {
        navigationDocument.presentModal(xml);
    },

    menuBarItemPresenter: function(xml, ele) {
        var feature = ele.parentNode.getFeature("MenuBarDocument");

        if (feature) {
            var currentDoc = feature.getDocument(ele);
            if (!currentDoc) {
                feature.setDocument(xml, ele);
            }
        }
    },

    load: function(event) {
        console.log(event);

        var self = this,
            ele = event.target,
            templateURL = ele.getAttribute("template"),
            presentation = ele.getAttribute("presentation");
            videoURL = ele.getAttribute("videoURL");

        if(videoURL) {
            var player = new Player();
            var playlist = new Playlist();
            var mediaItem = new MediaItem("video", videoURL);

            player.playlist = playlist;
            player.playlist.push(mediaItem);
            player.present();
        }

        if (templateURL) {
            self.showLoadingIndicator(presentation);
            resourceLoader.loadResource(templateURL,
                function(resource) {
                    if (resource) {
                        var doc = self.makeDocument(resource);
                        doc.addEventListener("select", self.load.bind(self));
                        doc.addEventListener("highlight", self.load.bind(self));

                        if (self[presentation] instanceof Function) {
                            self[presentation].call(self, doc, ele);
                        } else {
                            self.defaultPresenter.call(self, doc);
                        }
                    }
                }
            );
        }
    },

    makeDocument: function(resource) {
        if (!Presenter.parser) {
            Presenter.parser = new DOMParser();
        }

        var doc = Presenter.parser.parseFromString(resource, "application/xml");
        return doc;
    },

    showLoadingIndicator: function(presentation) {
        if (!this.loadingIndicator) {
            this.loadingIndicator = this.makeDocument(this.loadingTemplate);
        }

        if (!this.loadingIndicatorVisible && presentation != "modalDialogPresenter" && presentation != "menuBarItemPresenter") {
            navigationDocument.pushDocument(this.loadingIndicator);
            this.loadingIndicatorVisible = true;
        }
    },

    removeLoadingIndicator: function() {
        if (this.loadingIndicatorVisible) {
            navigationDocument.removeDocument(this.loadingIndicator);
            this.loadingIndicatorVisible = false;
        }
    },

    loadingTemplate: `<?xml version="1.0" encoding="UTF-8" ?>
        <document>
          <loadingTemplate>
            <activityIndicator>
              <text>Loading...</text>
            </activityIndicator>
          </loadingTemplate>
        </document>`
}

1 个答案:

答案 0 :(得分:1)

嗨Josh

尝试使用resourceLoader.loadResource方法删除加载文档时附加的突出显示事件。

看来,你正在附上两个事件

  1. doc.addEventListener(“select”,self.load.bind(self));
  2. doc.addEventListener(“highlight”,self.load.bind(self));
  3. 尝试删除第二个。