我正在尝试使用 TVML 创建一个简单的幻灯片应用程序。我正在尝试在我的 JavaScript 函数中使用 setinterval 函数,但在 tvOS 模拟器上它不起作用。当我在其他处理程序(即App.onWillEnterForeground(中调用该函数时,我的屏幕会刷新,但不按时间间隔刷新。有人知道TVML的局限性吗?或者如何解决这个问题?
我没有看到屏幕更新,但在网络服务器上也没有看到任何请求。
function MyStartup(){
var alert = createAlert("Hello", "Welcome to tvOS");
navigationDocument.pushDocument(alert);
var interval = setInterval(MyInterval(), 5000);
}
function MyInterval(){
var newDoc = createAlert("Hello", "Welcome to tvOS");
const oldMain = navigationDocument.documents[0];
navigationDocument.replaceDocument(newDoc, oldMain);
}
var createAlert = function(title, description) {
var d = new Date();
var n = d.getTime();
var alertString = `<?xml version="1.0" encoding="UTF-8" ?>
<document>
<mainTemplate>
<background>
<img src="http://localhost:9001/IMG_8066.jpg" />
</background>
<menuBar>
<nowPlayingMenuItem>
<title>${n}</title>
</nowPlayingMenuItem>
<section>
<menuItem></menuItem>
</section>
</menuBar>
</mainTemplate>
</document>`
var parser = new DOMParser();
var alertDoc = parser.parseFromString(alertString, "application/xml");
return alertDoc
}
我认为setInterval确实有效。 但你在那里说错了。
而不是
var interval = setInterval(MyInterval(), 5000);
我认为你应该把()
排除在外,把它称为
var interval = setInterval(MyInterval, 5000);
您正在尝试将引用(?或JS中调用的任何内容(传递给回调函数;但是,您将函数MyInterval(((这是空的?(的RETURN值传递到回调中,因此回调没有执行任何操作。