我正在尝试使用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
}
答案 0 :(得分:0)
我认为setInterval确实有效。但是你在那叫错了。
代替
var interval = setInterval(MyInterval(), 5000);
我认为您应该省略()
并称其为
var interval = setInterval(MyInterval, 5000);
您试图将引用(?或JS中调用的任何内容)传递给回调函数;但是,您要将函数MyInterval()的RETURN VALUE(它为null?)传递到回调中,因此回调没有执行任何操作。