Android动画和performClick创建游戏AI

时间:2011-01-28 05:16:13

标签: android user-interface animation

我试图通过自动点击按钮来创建AI的幻觉。

我知道我可以使用动画框架并在Button视图上使用performClick,但是你能推荐一种在动画序列中添加performClick()调用的方法吗?

感谢您提供任何帮助!

1 个答案:

答案 0 :(得分: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);
}