我已经做了一些探讨,但是关于这个主题的文档似乎有点稀疏,而且一两件事没有加起来,
我正在尝试获取一条线来跟踪动画元素,我的设计是使用与框元素相同的动画变量作为线的 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 的极其业余的理解,但我将不胜感激任何建设性的帮助。