2011-01-28 111 views
0

我想通過自動點擊按鈕來創建AI的幻覺。Android動畫和performClick創建遊戲AI

我知道我可以使用動畫框架並在按鈕視圖上使用performClick,但是您能推薦一種將performClick()調用添加到動畫序列的方法嗎?

感謝您的幫助!

+0

嗨你有沒有解決這個問題?我被類似的東西卡住了。 – ron 2011-04-09 08:27:33

回答

0

我的解決方案(MVC啓發方法):

我們可以創建預先確定的操作的堆棧: Stack<AIAction> replay = new Stack<AIAction>();(AIAction是模型)

然後,我們可以在每一個新動作加入到我們的棧稍後重播: replay.add(new AIAction(AIAction.SELECT,...)); 所有的邏輯和決定都在這裏完成。 (控制器)

我們有一組動作後,我們可以對其進行重放,併爲用戶顯示的動畫(視圖):

for (int i=0;i<replay.size();i++,start+=pause()){ 
     AIAction thisAction = replay.get(i); 

     switch(thisAction.getAction()){ 

     case AIAction.SELECT: 
      scheduleSelect(start,...); 
      break; 
     case AIAction.REENABLE_CLICKING: 
      scheduleReEnableClicking(start); 
      break; 
     case AIAction.TOAST: 
      if (thisAction.getToast()) 
       scheduleToast(thisAction.getMessage(),start,true); 
      else 
       scheduleToast(thisAction.getMessage(),start,false); 
      break; 
     } 
    } 

我們現在需要的功能,如scheduleSelect()scheduleReEnableClicking()scheduleToast(): 這給人一種「思考」AI的印象,並允許用戶關注。

// for example: 
private void scheduleSelect(int start,...){ 

    Handler handler = null; 

handler = new Handler(); 
handler.postDelayed(new Runnable(){ 
    // select logic after 'start' milliseconds 
    ... 
}, start); 


} 

private void scheduleReEnableClicking(int start){ 
    Handler handler = null; 

    handler = new Handler(); 
    handler.postDelayed(new Runnable(){ 
     public void run(){ 
        // set clickable logic after 'start' milliseconds 
      setClickable(true); 
     } 
    }, start); 
} 

private void scheduleToast(final String message,int start){ 
    Handler handler = null; 

    handler = new Handler(); 
handler.postDelayed(new Runnable(){ 
    public void run(){ 
     toast(message,pause()); 
     } 
    }, start); 
}