Java 处理程序postDelay只工作一次

Java 处理程序postDelay只工作一次,java,android,Java,Android,我试图在handler.postDelay()中更改处理程序的延迟,但在这里它只工作一次,然后停止。关键的方法是最后。我正在考虑如何使可运行的在postDelay()的循环中工作 类MyGestureListener实现GestureDetector.OnGestureListener{ @凌驾 公共布尔onSingleTapUp(运动事件e){ 列=(int)(e.getX()/cellWidth); 行=(int)(e.getY()/cellHeight); selectedNode=(6*

我试图在
handler.postDelay()
中更改处理程序的延迟,但在这里它只工作一次,然后停止。关键的方法是最后。我正在考虑如何使可运行的在postDelay()的循环中工作

类MyGestureListener实现GestureDetector.OnGestureListener{
@凌驾
公共布尔onSingleTapUp(运动事件e){
列=(int)(e.getX()/cellWidth);
行=(int)(e.getY()/cellHeight);
selectedNode=(6*行)+列;
if(selectedNode==enemyNode&!atak&&GameMovingObject.ableToAttack(chibiAlive、enemyAlive、chibiNode、enemyNode)){
如果(攻击选项){
奇比1。攻击(敌人。获取(enemyId));
//attackOption=false;
atak=真;
如果(!enemyAlive){
enemyId=enemyId+1;
添加(新敌人(enemyId,gamessurface.this,wolf,敌方.genPosition(getWidth(),getHeight())[0],敌方.genPosition(getWidth(),getHeight())[1],cellWidth,cellHeight));
enemyAlive=true;
}
}
}
// ...
返回true;
}
}
相关方法

public static boolean-ableToAttack(boolean-chibiAlive、boolean-enemyAlive、int-chibiNode、int-enemyNode){
如果(!chibiAlive | | |!enemyAlive)
返回false;
布尔值=假;
如果(chibiNode>enemyNode)
如果(chibiNode-enemyNode==1 | | chibiNode-enemyNode==5 | | chibiNode-enemyNode==6 | | chibiNode-enemyNode==7)
able=正确;
if(enemyNode>chibiNode)
able=enemyNode-chibiNode==1 | | enemyNode-chibiNode==5 | | enemyNode-chibiNode==6 | | enemyNode-chibiNode==7;
可返回;
}

公共空间攻击(敌方){
if(身体的一部分等于(“腿”))
getLegsDamage(generatedmage());
如果(敌方生命50){
legsDamaged=2;
handler2.removeCallbacksAndMessages(空);
handler2.postDelayed(可运行,4000);
}
}
runnable看起来像这样

runnable=newrunnable(){
@凌驾
公开募捐{
命中=真;
//gs.canvas.drawBitmap(位图,200200,空);
cc.setHp(cc.getHp()-generatedmage());

如果(cc.getHp()不完全确定您要问什么,但我将问题解释为您希望
Runnable
每4s运行一次,在这种情况下,
Runnable
需要在完成之前将其自身发布,如下所示:

runnable=newrunnable(){
@凌驾
公开募捐{
命中=真;
//gs.canvas.drawBitmap(位图,200200,空);
cc.setHp(cc.getHp()-generatedmage());

如果(cc.getHp(),你希望它每4秒运行一次吗?是的,这就是我想要的。我希望它每4秒运行一次,但你的版本似乎根本不起作用,我的意思是这个循环不起作用。