0
我想通过自动点击按钮来创建AI的幻觉。Android动画和performClick创建游戏AI
我知道我可以使用动画框架并在按钮视图上使用performClick,但是您能推荐一种将performClick()调用添加到动画序列的方法吗?
感谢您的帮助!
我想通过自动点击按钮来创建AI的幻觉。Android动画和performClick创建游戏AI
我知道我可以使用动画框架并在按钮视图上使用performClick,但是您能推荐一种将performClick()调用添加到动画序列的方法吗?
感谢您的帮助!
我的解决方案(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);
}
嗨你有没有解决这个问题?我被类似的东西卡住了。 – ron 2011-04-09 08:27:33