timeout函数,用于使用canvas的简单html 5 javascript动画
timeout function for simple html 5 javascript animation using canvas
我一直在尝试用html 5和javascript制作这个简单的动画:
http://www.developphp.com/view.php?tid=1262
代码如下:
<!-- Lesson by Adam Khoury @ www.developphp.com -->
<!-- Watch the video to get code explanation line by line -->
<!-- http://www.youtube.com/watch?v=hUCT4b4wa-8 -->
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
canvas{border:#666 1px solid;}
</style>
<script type="text/javascript">
function draw(x,y){
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
ctx.save();
ctx.clearRect(0,0,550,400);
ctx.fillStyle = "rgba(0,200,0,1)";
ctx.fillRect (x, y, 50, 50);
ctx.restore();
x += 1;
var loopTimer = setTimeout('draw('+x+','+y+')',100);
}
</script>
</head>
<body>
<button onclick="draw(0,0)">Draw</button>
<canvas id="canvas" width="550" height="400"></canvas>
</body>
</html>
代码中有一件事我不明白:在setTimeout
方法中,x
和y
之前和之后的'+'
做什么,以及为什么用引号括住+x+
和+y+?
'draw('+x+','+y+')'
这只是一个字符串连接,您可以通过打印该字符串来理解这一点。下面的小提琴解释更多。
http://jsfiddle.net/zebqqcee/
setTimeout将使用eval执行指令,我的意思是当超时弹出时执行:
eval('draw('+x+','+y+')');
如果你不喜欢这种语法,我个人不喜欢,你可以使用这个:
var loopTimer = setTimeout(function() {
draw(x,y);
},100);
相关文章:
- 从简单的html页面调用实时Web服务.
- 简单HTML&JavaScript外壳游戏
- html表单,它有文本和表,现在我想在一个简单的文本文件中保存和检索数据,如何实现它
- 按键事件上的简单HTML输入不起作用
- Heroku类型的简单HTML/JS应用程序托管
- 如何使一个简单的HTML文件成为wordpress中可用的页面
- 简单的node.js服务器,它发送html+css作为响应
- Accordion文本效果在使用JavaScript的简单html页面中不起作用
- 使用html表单作为python脚本输入的简单解决方案
- Javascript变量未显示在简单的HTML脚本中
- 在HTML中记住用户区域设置选择的最简单方法
- 将一个简单的html表集成到javascript中
- 创建/使用简单的美制到公制转换器的问题.(HTML/JavaScript)函数未启动
- 带有Javascript的简单HTML按钮
- HTML最简单的隐藏/显示和类过滤器
- 如何使用简单的html解析器或其他东西获取值
- Phonegap:监听页面并关闭InAppBrowser返回index.html的简单方法
- 我该如何实现CSS/HTML中使用密码字段的非常简单的文本框提示
- 无法获取使用 HTML 简单登录到 PHP Web 服务的数据
- 网页大小自动调整HTML简单