Как сделать прокрутку на холсте j2me?

Я создал пример приложения, в котором хочу выполнять прокрутку, но не могу добиться желаемого результата.

Я пробовал следующий код внутри метода рисования >>>>>

g.translate(x,y);

и передача значения для переменной 'y' в событии keydown и keyup.

Может ли кто-нибудь помочь мне сделать это?


person iLearner    schedule 09.02.2012    source источник
comment
скорее всего у вас ошибка в коде. Если вы покажете код, который используете в Canvas#keyPressed и Canvas#paint, вам будет легче сказать. Кроме того, как вы тестируете свое приложение — используете ли вы эмулятор? вы пишете сообщения журнала из кода?   -  person gnat    schedule 10.02.2012


Ответы (3)


Самый простой способ (хотя и требует много памяти) - использовать MutableImage и рисовать его с отрицательными координатами y.

Изменяемое изображение — это просто новое изображение (w, h).
Затем вы получаете его контекст Graphics, используя myImage.getGraphics(), и рисуете с помощью этого объекта Graphics. Он служит закадровым буфером.

Чем в Paint (Graphics g), вы вызываете:

g.drawImage(0,y,...);

где вы циклически уменьшаете y при каждом системном вызове paint.
(не блокируйте рисование! - каждый вызов представляет собой один кадр, и вы выполняете покадровую анимацию
выполняете цикл анимации из другого потока, где вы уменьшаете y, чем вызываете repaint() и засыпаете).

person Amir Uval    schedule 21.02.2012

Вы пытались уменьшить значение Y в keyUP и вызвать метод repaint(), а также сделать то же самое с keyDown, но теперь значение Y будет уменьшаться и вызывать метод repaint().

Используйте g.translate(x, changingYvalue);

попробуй это.

person iLearner    schedule 24.02.2012

Я думаю, что полоса прокрутки должна быть нарисована внутри метода paint. И вы реализуете метод keyReleased при нажатии на стрелку полосы прокрутки. Для реализации scrolling я бы предпочел вызвать repaint();, а я буду управлять методом paint с помощью логического или другого частного типа variable.

person Lucifer    schedule 24.02.2012