2017-09-13 57 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沒有顯示:) –