如何添加时间延迟

时间:2011-12-12 10:05:34

标签: blackberry

我想在两张图片之间切换。 在我的应用程序中有一个图像,当点击该图像时,另一个图像在一秒钟内到达并且前一个图像在同一位置。过渡需要对用户可见

我的代码是

import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.TouchEvent;
class aaa extends UiApplication
{
 public aaa()
{
    pushScreen(new bbb());
}
public static void main(String args[])
{
    aaa theApp= new aaa();
    theApp.enterEventDispatcher();
}
}
class bbb extends MainScreen
{
boolean flag=true;
BitmapField refresh1,refresh2;
HorizontalFieldManager hfm;
public bbb()
{
    hfm= new HorizontalFieldManager(HorizontalFieldManager.FIELD_RIGHT);
    refresh2= new BitmapField(Bitmap.getBitmapResource("refresh_depressed.png"));
    refresh1= new BitmapField(Bitmap.getBitmapResource("refresh.png"))
    {
        protected boolean touchEvent(TouchEvent message) 
        { 
            if ( message.getEvent() == TouchEvent.CLICK ) 
            {
                synchronized (UiApplication.getUiApplication().getAppEventLock()) 
                {
                    if(flag)
                    {
                        hfm.delete(refresh1);
                        hfm.add(refresh2);
                        flag = false;
                    }
                    else
                    {
                        hfm.delete(refresh2);
                        hfm.add(refresh1);
                        flag=true;
                    }
                    return true;
                }                    
            }
            return super.touchEvent(message);
        }
    };

    hfm.add(refresh1);    
    add(hfm);    
}
}

2 个答案:

答案 0 :(得分:1)

add中的deleteeventlock字段。

我已更新您的代码并将其设置如下。

boolean flag = false;
    public bbb()
{
    hfm= new HorizontalFieldManager(HorizontalFieldManager.FIELD_RIGHT);
    Bitmap refresh2 = Bitmap.getBitmapResource("refresh_depressed.png"));
    Bitmap refresh1= Bitmap.getBitmapResource("refresh.png");
    BitmapField bfield = new BitmapField(refresh2)
    {
        protected boolean touchEvent(TouchEvent message) 
        { 
            if ( message.getEvent() == TouchEvent.CLICK ) 
            {
                synchronized (UiApplication.getUiApplication().getAppEventLock()) 
                {
                    if(flag)
                    {
                        bfield.setBitmap(refresh1);
                        flag = false;
                    }
                    else
                    {
                        bfield.setBitmap(refresh2);
                        flag=true;
                    }
                    return true;
                }                    
            }
            return super.touchEvent(message);
        }
    };

    hfm.add(bfield);    
    add(hfm);    
}

答案 1 :(得分:0)

确保在删除/添加任何字段后调用invalidate(),以便重新绘制屏幕并显示更改。