【问题标题】:How can I auto-scroll images like marque text in Blackberry 5.0?如何在 Blackberry 5.0 中自动滚动图像,如选取框文本?
【发布时间】:2012-10-08 12:54:51
【问题描述】:

我在 HFM 的 3 个位图字段中添加 3 个图像。它使用拨轮水平滚动,但我希望图像像字幕文本一样自动滚动。 我得到了线索 display scroll text like marquee 但是如何用图片替换呢?

【问题讨论】:

    标签: blackberry java-me blackberry-simulator blackberry-eclipse-plugin blackberry-jde


    【解决方案1】:

    说你的 TimerTask 增加名为 int currentScroll

    的滚动量

    您必须在自定义字段的绘制方法中处理图像。这是一个图像滚动的示例(如果图像比您的屏幕大):

    Bitmap bmp = this.getBitmap1();
    int width = bmp .getWidth();
    graphics.drawBitmap(0, 0, width , bmp.getHeight(), bmp, currentScroll, 0)
    

    【讨论】:

    • 谢谢 Hithredin,我正在做。我需要调用我的CustomBitmapField extends BitmapField 3 次以获得 3 张图像,而不像 MarqueeLabel extends LabelField 调用一次吗? MarqueeLabel 包含整个标签,因此它在一次调用 super() 时被绘制,但这里我有 3 个位图。如果我只需要调用它 1 次,那么如何调用 super(bitmap)? (请参阅上面的链接以滚动字幕)。
    • 嘿,它的滚动,但在onFocus()onUnfocus() 中有一些例外。我从那里打电话给invalidate(),以便在集中注意力的同时改变一些边框效果。我做得对吗?请纠正我。
    • 如何添加边框?在这种自定义状态下,我建议您在绘制方法中绘制边框(类似 graphics.drawFillREct 之类的),具体取决于您是否有焦点。
    • 我在paint() 中设置边框,并从onFocus()onUnFocus() 调用invalidate()。因此调用paint() 2 次。我认为当onFocus() 被调用时会出现异常。
    【解决方案2】:
    BitmapField imageField = new BitmapField(Bitmap.getBitmapResource("sync.png"),
                    Field.FOCUSABLE);
    
    Border imageFieldBorder = BorderFactory.createBevelBorder(edges, new XYEdges(Color.BLACK, Color.BLACK, Color.BLACK,Color.BLACK), new XYEdges(Color.WHITESMOKE, Color.WHITESMOKE,Color.WHITESMOKE, Color.WHITESMOKE));
    
    
    imageField.setBorder(imageFieldBorder);
    

    你也可以改变边框的颜色

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-11
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多