2011年3月12日 星期六

Android Game 造型動畫教學(四) - 讓敵人動起來

前一篇文章中談到如何利用抽象類別來建立框架,當框架完成後,本篇文章要介紹如何讓敵軍的物件動起來。由於本篇暫不談敵軍子彈的射擊,所以我們在抽象類別Barrage中新增一個沒有參數的update()函式,此函式主要是用來更新敵軍物件的位置。

接下來修改EnemyA.java,宣告下列變數:
private LTimer timer; //計時器做更換敵軍的圖片的時間
private static LImage[] bees; //儲存敵軍角色的圖片
private int index; //指示目前要顯示敵軍角色的那一張圖片
private int size; //圖片大小
private double vx, vy; //每次移動的增量
除了上述的變數外,我們利用建構子來設定計時器的時間間隔,設定敵軍的位置及每次移動的增量,也把敵軍的各種圖片儲存在bees變數中。此外也利用draw及update函式分別來重敵軍及更新敵軍的位置和要顯示那張圖片。

再來就剩下Screen1.java的修訂,使用counterEnemy來計數何時產生一個新的敵軍,enemys 是以Barrage的泛型類別用來儲存敵軍物件,barrages 則是一個鏈結串列的集合,目前僅含敵軍的物件,未來將會再包含子彈的物件,利用這樣的寫法可以用一個迴圈把要更新重繪的物件執行完畢,move則是用來儲存迴圈所取出的物件。其宣告如下:

private int counterEnemy;
private LinkedList enemys = new LinkedList();
private List[] barrages = { enemys };
ListIterator move;

使用draw來重繪精靈及敵軍,然後利用alter函式來更新敵軍的位置,並產生新的敵軍。

最後執行結果如下圖:

沒有留言:

張貼留言