当我在回调计时器中调用声音对象时,我的代码中出现错误。在抛出错误之前,wav文件将只播放一次。如果我将它包装在超时函数中,它将每次都有效。我应该以不同的方式编码摆脱这个错误吗?
function InitInterval() {
timer.stop();
timer.setInterval({
callback : IntervalMain,
delay : 1000 //set delay in ms
});
timer.start();
};
function IntervalMain() {
has_started = true;
if (countdown === 0) {
schedule_index++;
setTimeout(function() {
PlayAudio(schedule[schedule_index].sound, schedule[schedule_index].type);
}, 500);
}
$.crono_label.text = time_converter.toTime(countdown--);
};
答案 0 :(得分:2)
setTimeout(function_name , 0);
是在主线程上运行它的最佳方式。
对于某些插件,有时我们无法访问UI对象,并且因为它们不在主线程上运行而与上下文有相同的问题。
在我的情况下,我在Touch ID功能中遇到了这个问题,我为IOS 8使用了 Ti.TouchId
模块 authenticate
功能。< / p>
我无法运行 Alloy.createController("window_Name").getView();
和
收到的错误是Creating [object WindowName] in a different context than the calling function.
目前我认为Titanium不能仅在插件中修复此问题。
我使用 setTimeout(function_name , 0);
,它对我来说很好。