位置:首頁 > 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將重新出現在屏幕上