jQuery模拟抛物线轨迹动画

本文作者html5tricks,转载请注明出处

利用jQuery和HTML5可以模拟很多数学中的函数图象,比如HTML5 Canvas正弦波动画。今天我们要介绍一个用jQuery实现简单的模拟抛物线轨迹的插件,可以开始和暂停抛物线的运动,以及重新设置抛物线的参数。

jquery-parabola

下面简单了解一下实现这个jQuery抛物线运动的过程。

HTML代码:

<div class="btns" style="margin-top:20px">
    <a href="javascript:;" id="run">run</a>
    <a href="javascript:;" id="reset">reset</a>    
    <a href="javascript:;" id="stop">stop</a>
    <a href="javascript:;" id="setOptions">setOptions</a>
</div>
<div id="boll" class="boll"></div>
<div id="target" class="target"></div>

CSS代码:

.btns{text-align:center;}
.btns a{
	color:#fff;padding:5px 10px;font-family:Arial;
	background-color:#f90;text-decoration:none;
}
.boll {
	width: 50px;
	height: 50px;
	background-color: #ff3333;
	position: absolute;
	top: 380px;
	left: 100px;
	-moz-border-radius: 50px;
	-webkit-border-radius: 50px;
	border-radius: 50px;
}

.target {
	width: 50px;
	height: 50px;
	background-color: #CDCDCD;
	position: absolute;
	top: 180px;
	left: 600px;
	-moz-border-radius: 50px;
	-webkit-border-radius: 50px;
	border-radius: 50px;
}

引入我们的jQuery库和抛物线插件库:

<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/parabola.js"></script>

最后是JavaScript调用:

<script type="text/javascript">
    var bool = new Parabola({
        el: "#boll",
        offset: [500, 100],
        curvature: 0.005,
        duration: 2000,
        callback:function(){
            alert("完成后回调")
        },
        stepCallback:function(x,y){
            console.log(x,y);
            $("<div>").appendTo("body").css({
                "position": "absolute",
                "top": this.elOriginalTop + y,
                "left":this.elOriginalLeft + x,
                "background-color":"#CDCDCD",
                "width":"5px",
                "height":"5px",
                "border-radius": "5px"
            });
        }
    });
    $("#reset").click(function () {
        bool.reset()
    });
    $("#run").click(function () {
        bool.start();
    });
    $("#stop").click(function () {
        bool.stop();
    });
    $("#setOptions").click(function () {
        bool.setOptions({
            targetEl: $("#target"),
            curvature: 0.001,
            duration: 1000
        });
    });
</script>

其实实现起来也并不难,主要运用了数学转换的概念,你学要对抛物线的物理学原理非常清楚。

在线演示源码下载

热门推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>