位置:首页 > Web开发 > Javascript在线教程 > JavaScript动画

JavaScript动画

你可以使用JavaScript来创建复杂的动画其中包括但不限于:

  • 烟火
  • 淡入淡出效果
  • 滚入或转出
  • 入页面或出页面
  • 对象运动

本在线教程会给一个基本的了解如何使用JavaScript来创建一个动画。

JavaScript可以按照某种模式,由一个逻辑等式或函数来确定移动至若干DOM元素(<IMG/>,<DIV>或任何其他HTML元素)页面各处。

JavaScript提供以下要经常用于动画程序两种功能。

  • setTimeout( function, duration) - 从现在这个函数调用 duration 毫秒后的 function

  • setInterval(function, duration) - 每次持续duration 毫秒之后,此函数调用function。

  • clearTimeout(setTimeout_variable) - 这个函数调用清除任何计时器由setTimeout()函数设置。

JavaScript还可以设置一个数字,包括它在屏幕上的位置DOM对象的属性。可以设置一个对象的顶部和左侧的属性在屏幕上的任何位置。下面是简单的语法:

// Set distance from left edge of the screen.
object.style.left = distance in pixels or points; 

or
// Set distance from top edge of the screen.
object.style.top = distance in pixels or points; 

手动动画:

所以,让我们使用DOM对象的属性和JavaScript函数如下的实现一个简单的动画:

<html>
<head>
<title>JavaScript Animation</title>
<script type="text/javascript">
<!--
var imgObj = null;
function init(){
   imgObj = document.getElementById('myImage');
   imgObj.style.position= 'relative'; 
   imgObj.style.left = '0px'; 
}
function moveRight(){
   imgObj.style.left = parseInt(imgObj.style.left) + 10 + 'px';
}
window.onload =init;
//-->
</script>
</head>
<body>
<form>
<img id="myImage" src="/images/html.gif" />
<p>Click button below to move the image to right</p>
<input type="button" value="Click Me" onclick="moveRight();" />
</form>
</body>
</html>

下面是上面的例子的说明:

  • 我们使用的是JavaScript函数的getElementById()来获取一个DOM对象,然后将其分配给一个全局变量 imgObj.

  • 我们定义了一个初始化函数的init()来初始化imgObj,我们已经设置它的位置和左属性。

  • 我们调用初始化函数在窗口加载时。

  • 最后,我们调用并将MoveRight()函数由10个像素来增加左边的距离。你也可以将其设置为一个负数值,以将其移动到左侧。

自动动画:

在上面的例子中,如我们所看到的,如何将图像移动到右每点击。可以通过使用JavaScript函数的setTimeout()如下自动完成这一过程:

<html>
<head>
<title>JavaScript Animation</title>
<script type="text/javascript">
<!--
var imgObj = null;
var animate ;
function init(){
   imgObj = document.getElementById('myImage');
   imgObj.style.position= 'relative'; 
   imgObj.style.left = '0px'; 
}
function moveRight(){
   imgObj.style.left = parseInt(imgObj.style.left) + 10 + 'px';
   animate = setTimeout(moveRight,20); // call moveRight in 20msec
}
function stop(){
   clearTimeout(animate);
   imgObj.style.left = '0px'; 
}
window.onload =init;
//-->
</script>
</head>
<body>
<form>
<img id="myImage" src="/images/html.gif" />
<p>Click the buttons below to handle animation</p>
<input type="button" value="Start" onclick="moveRight();" />
<input type="button" value="Stop" onclick="stop();" />
</form>
</body>
</html>

在这里,我们增加更多的情趣。因此,让我们看看新的功能:

  • 并将 MoveRight()函数调用 setTimeout()函数来设置 imgObj 位置。

  • 我们增加了一个新的函数stop()来清除由定时器设定的setTimeout()函数来设置对象在其初始位置。

翻转用鼠标事件:

下面是一个简单的例子,显示图像翻转用鼠标事件:

<html>
<head>
<title>Rollover with a Mouse Events</title>
<script type="text/javascript">
<!--
if(document.images){
    var image1 = new Image();      // Preload an image
    image1.src = "/images/html.gif";
    var image2 = new Image();      // Preload second image
    image2.src = "/images/http.gif";
}
//-->
</script>
</head>
<body>
<p>Move your mouse over the image to see the result</p>
<a href="#" onMouseOver="document.myImage.src=image2.src;"
            onMouseOut="document.myImage.src=image1.src;">
<img name="myImage" src="/images/html.gif" />
</a>
</body>
</html>

让我们来看看有什么不同的位置:

  • 在加载这个页面,if语句检查图像对象存在的时间。如果图像对象是不可用的,该块将不被执行

  • Image()构造函数创建并预装名为image1的一个新的图像对象

  • src属性指定的外部图像文件的名称叫 /images/html.gif

  • 我们已经创建IMAGE2对象,并在这个对象分配/images/http.gif类似的方式

  • 在#(井号)禁用链接,浏览器不会尝试去一个URL点击时。此链接的图像

  • 当用户的鼠标移动到链路,而onmouseout事件处理程序,当用户的鼠标移动远离链路(图像)被触发onMouseOver事件处理程序被触发

  • 当鼠标移动时在图像上,从第一图像到第二个在HTTP图像的变化。当鼠标被从图像移离,则显示原来的图象

  • 当鼠标离开该链接时,初始图像html.gif将重新出现在屏幕上