【发布时间】:2013-12-09 15:34:34
【问题描述】:
我希望我的代码使用 moment.js 获取特定时间,将其与“帧”编号相关联,然后使用该编号填充 url 以获取序列中的指定图像。然后,该 url 将以 500 毫秒的速率遍历一系列图像 url(它们是小图像,例如 20k)。我使用名为 getframe 的 setInterval 函数来做到这一点。
但为了确保我的帧迭代器不会因为滞后太远,我还想运行另一个名为 gettime 的 setinterval,它会根据新的 moment.js 时间戳更新帧变量。我每 10000 毫秒运行一次。问题是我的代码不适用于这两个同时运行的 setInterval。如果我从 setinterval 中取出函数 gettime 它工作正常但是当我把它放回去时它会停止并且我不知道为什么?
欢迎有关如何更有效地进行此 gettime 更新的建议,但我的 jquery 技能非常有限(抱歉),因此您必须非常详细地解释为什么/如何工作..
<!DOCTYPE html>
<html>
<head>
<script src="three/js/moment.js"> </script>
<script src="three/js/jquery-2.0.3.js"></script>
<style>
.frames { position:relative; width:500px; height:332px; }
.frames img { position:absolute; left:0; top:0; }
</style>
<head>
<body>
<img id ="frame_placeholder">
<script>
window.onload = $(function (){
setInterval(gettime,10000);
setInterval(getframe,500);
function gettime(){
now = moment().zone('-0500')
if (now.hour() >= 18) {
now = now.subtract('hour', 18).subtract('minute', 30)
} else {
now = now.add('hour', 6).add('minute', 30)
};
var frame = ((now.hour() * 3600) + (now.minute() * 60) + now.second()) * 2;
};
function getframe(){
var framestr=frame.toString();
function pad (str, max)
{
return str.length < max ? pad("0" + str, max) : str;
};
framerun = pad (framestr,5);
var src = "https://s3.amazonaws.com/image"+ framerun +".jpg"
framerun1=parseInt(framerun)
$("#frame_placeholder").attr("src", src);
frame=framerun1+=1;
}
});
</script>
</body>
</html>
【问题讨论】:
-
你的控制台说什么?抛出任何错误? gettime 是否自行运行(没有 getframe)?
-
框架未在 getframe() 中定义
标签: jquery setinterval