#blackberry #java-me
#ежевика #java-me
Вопрос:
Я добавляю VerticalFieldManager на экран. Я рисую фоновое изображение и, чтобы удалить пробелы внизу экрана, когда пользователь прокручивает вниз, я переопределяю подуровень в моем verticalfieldmanager вот так:
protected void sublayout( int maxWidth, int maxHeight ) {
super.sublayout( maxWidth, maxHeight );
setExtent(maxWidth,Constants.BACKGROUND_IMAGE.getHeight());
}
Это не работает — в нижней части экрана появляется пробел, когда пользователь прокручивает страницу вниз. Я думал, что переопределение подпрошивки, используя тот же код, в объекте screen будет иметь приоритет над VerticalFieldManager, который является дочерним элементом screen.
Ответ №1:
Пара вещей, которые нужно проверить. Если вы вызываете на главном экране super(VERTICAL_SCROLL | USE_ALL_WIDTH)
, то на самом деле прокруткой вниз будет менеджер вашего экрана, а не VFM, который вы настроили. Вы можете попробовать переопределить метод paint () вашего VFM и сделать что-то подобное:
protected void paint(Graphics graphics) {
graphics.drawBitmap(0, getVerticalScroll(), bg.getWidth(), bg.getHeight(), bg, 0, 0);
super.paint(graphics);
}
Что должно заставить ваш фон «двигаться» вместе со прокруткой.
Комментарии:
1. Не следует ли сначала вызвать Super? В этом случае это переопределило бы drawBitmap?
2. Это фон, поэтому вы хотите сначала нарисовать его, а затем позволить всему остальному отрисовываться сверху (вызывая
super()
после).