25.01.2014 / 17:29 | |
UserSuperPupsik Пользователь Сейчас: Offline
Имя: UserSuperPupsik Регистрация: 27.09.2013
| Спасибо, aNNiMON! Буду пробовать. |
25.01.2014 / 17:36 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| UserSuperPupsik, конечно, создавать каждый раз новый экземпляр классов не хорошо, лучше кинуть все канвасы в статические массив и вызывать: if ( (KEY_NUM1 <= key) && (key <= KEY_NUM9) ) {
display.setCurrent(displayables[key - KEY_NUM1);
}
public static Displayable[] displayables;
// ----- в Main'e:
AbstractCanvas.displaybles = new Displayble[] {
new MyCanvas1(), new MyCanvas2(), new MyCanvas3(),
new MyCanvas4(), new MyCanvas5(), new MyCanvas6(),
new MyCanvas7(), new MyCanvas8(), new MyCanvas9(),
};
__________________
let live |
25.01.2014 / 17:45 | |
vl@volk Пользователь Сейчас: Offline
Имя: Владислав Откуда: Земля Регистрация: 26.12.2012
| Виктор, или создать вектор и добавить метод addScreen (Screen screen). У меня где-то валяется серьезная наработка, только ннз где
__________________
знает толк |
25.01.2014 / 17:48 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| vl@volk, если количество экранов заранее известно, то вектор необязателен. Но вообще да, с ним лучше и гибче.
__________________
let live |
25.01.2014 / 18:43 | |
Kalter Пользователь Сейчас: Offline
Имя: Гриб Откуда: Оренбург - Нежинка Регистрация: 16.10.2013
| Не совсем понял 4ый параметр при выведении картинки. Что там нужно указать? g.drawImage(image,x,y,/*?*/);
__________________
Homo homini penis est. |
25.01.2014 / 18:49 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Kalter, точка привязки. Доки в помощь. Например: g.drawImage(img, 0, 0, Graphics.TOP | Graphics.LEFT); в точке 0,0 будет верхний левый угол картинки g.drawImage(img, 0, 0, Graphics.VCENTER | Graphics.RIGHT); в точке 0,0 будет центральная правая сторона картинки. __________________
let live Изменено aNNiMON (25.01 / 18:50) (всего 1 раз) |
25.01.2014 / 21:17 | |
UserSuperPupsik Пользователь Сейчас: Offline
Имя: UserSuperPupsik Регистрация: 27.09.2013
| Уважаемый, aNNiMON, у меня куча ошибок не могу применить Ваш код, только время теряю... Можете дать готовый проект NetBeans? public abstract class AbstractCanvas extends Canvas {
public void keyPressed(int key) {
if (key == KEY_NUM1) display.setCurrent(new MyCanvas1());
if (key == KEY_NUM2) display.setCurrent(new MyCanvas2());
//...
if (key == KEY_NUM9) display.setCurrent(new MyCanvas9());
if (key == KEY_NUM8) repaint();
}
}
// Теперь все классы надо наследовать не от Canvas, а от AbstractCanvas.
public class MyCanvas1 extends AbstractCanvas {
public void keyPressed(int key) {
// Если нужна какая-то дополнительная логика, то пишем:
super.keyPressed(key);
}
}
Можете дать готовый проект NetBeans?Так бы всё сразу стало понятно! |
25.01.2014 / 21:38 | |
UserSuperPupsik Пользователь Сейчас: Offline
Имя: UserSuperPupsik Регистрация: 27.09.2013
| Нет я постарался Создать Midlet.java и AbstractCanvas.java. В Midlet.java запускал класс AbstracCanvas. Я знаю щас будет А как надо? |
25.01.2014 / 21:43 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| UserSuperPupsik, держи. Не проект, но классы рабочие. "package main;" можешь при необходимости убрать. Абстрактный класс нельзя явно вызвать. Нужно вызывать один из производных, то есть MyCanvasX. __________________
let live
Прикрепленные файлы: main.zip (3.69 кб.) Скачано 41 раз |