【发布时间】:2012-05-18 13:28:27
【问题描述】:
我已经进行了一些探讨,但有关该主题的文档似乎有点稀疏,并且一两件事没有加起来,
我正在尝试获取一条线来跟踪动画元素,我的设计是使用与框元素相同的动画变量作为线的 X1 坐标,
Javascript(最新的 jQuery、SVG 插件 + SVG 动画插件)
$(function(){
var balloons = [
$("#box1"),
$("#box2"),
$("#box3")
];
var lines = [
$("#line1"),
$("#line2"),
$("#line3")
];
function act(jqObj, lineX, speed, change) {
jqObj
.animate({'left': change}, speed)
.animate({'left': -change}, speed);
lineX
.animate({svgX1: change}, speed)
.animate({sgvX1: -change}, speed, function() {
act(jqObj, lineX, speed, change);
});
};
for (i = 0; i < balloons.length; i++) {
var speed = 2000 + Math.random() * 501;
var change = 10 + Math.random() * 26;
act(balloons[i], lines[i], speed, change);
}
});
HTML/CSS
<html>
<head>
<title>Proof of Concept Page</title>
<style type="text/css">
.html .body {position: absolute;}
.box {
position: absolute;
width:100px;
height:100px;
position: absolute;
background-color:red;
}
#box1 {
margin-left:300px; margin-top:60px
}
#box2 {
margin-left:500px; margin-top:20px
}
#box3 {
margin-left:700px; margin-top:50px
}
</style>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.svg.js"></script>
<script type="text/javascript" src="jquery.svganim.js"></script>
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<div class="box" id="box1">Proj 1</div>
<div class="box" id="box2">Proj 2</div>
<div class="box" id="box3">Proj 3</div>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<line id="line1" x1="350" y1="160" x2="550" y2="500" style="stroke:rgb(255,0,0);stroke-width:2"/>
<line id="line2" x1="550" y1="120" x2="550" y2="500" style="stroke:rgb(255,0,0);stroke-width:2"/>
<line id="line3" x1="750" y1="150" x2="550" y2="500" style="stroke:rgb(255,0,0);stroke-width:2"/>
</svg>
</body></html>
这里有几个问题,首先,很明显的一个,即当前代码将 X1 的位置设置在最左边,因为我没有告诉要添加到原始值。
我不使用 '+=change' 的原因是 '+=anything' 出于某种原因破坏了代码,甚至是通用数值。
最后,即使我只是将第一个 X1 动画的值设置为 500,第二个设置为 0,也只有第一个会触发,第二个动画会被跳过。这种效果在这里也可以看到,线条飞到最左边,然后不移动。
我敢肯定,这部分是我对 jQuery 和 Javascript 的极其业余的理解,但如果有任何建设性的帮助,我将不胜感激。
【问题讨论】: