2017-09-13 80 views
0

我是新来的Android和试图开发一款游戏。我试图在延迟一段时间后用递归函数调用替换ImageView中的图像。我面临的问题是,如果一旦图像被设置为ImageView,它不会改变,但每次都会调用该函数。从ImageView替换图像

我已经使用了setImageResource()setImageDrawable(),但仍然无法达到预期的效果。
有人可以帮助我吗?

我使用这样做的作用是:

typelaneNumber从调用函数play()

int images[] = {R.drawable.blue, R.drawable.bluesq, R.drawable.red, R.drawable.redsq}; 
void play() 
{ 
    type = random.nextInt(2); 
    laneNumber = random.nextInt(4); 
    createBlock(type,laneNumber); 
    if(--count>0) 
    { 
    play(); 
    } 
} 

void createBlock(int type, int laneNumber) { 
    switch (laneNumber) 
    {    
    case 0: 
     selector = 0; 
     objectLane1.setImageResource(images[type+selector]); 
     animateDown(objectLane1); 
     break; 
    case 1: 
     selector = 0; 
     objectLane1.setImageResource(images[type+selector]); 
     animateDown(objectLane1); 
     break; 
    case 2: 
     selector =2; 
     objectLane1.setImageResource(images[type+selector]); 
     animateDown(objectLane1); 
     break; 
    case 3: 
     selector = 2; 
     objectLane1.setImageResource(images[type+selector]); 
     animateDown(objectLane1); 
     break; 
    } 
} 
+0

你打电话play(); – phpdroid

+0

我认为你的递归调用只是结束了。您没有等待变更可见的时间段。尝试添加一些固定的睡眠,或者'AnimationListener'来等待动画结束。 – Gotiasits

+0

in'onCreate()'我的活动 –

回答

0

过去了,因为有递归调用之间没有等待期,也没有办法即使它发生,也请参阅ImageView更改。

解决方案:

等待动画使用AnimationListener完成。这种方式下一个递归将不会执行动画完成之前。

+0

是我做到了,问题解决了。 :) –

+0

@ Jay.jk太棒了,很高兴它的工作。您可以通过接受证明有用和/或赞成的答案来帮助社区。 – Gotiasits

+0

我已经标记了它有用,但我是stackOverflow的新手,所以我的upvotes没有显示:) –