Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java ME (J2ME) > Урок по созданию графического меню |
Автор: Samuil 16.7.2006, 10:54 | ||
Hi All!!! Многие сталкиваются при написании игр на проблемму с меню(решенить эту проблемму можно решить двумя способами: 1)Создание с помощью высокоуровнего интерфейса 2)Создание с помощью низкоуровнего интерфейса). Вот решил написать урок по созданию графического меню с помощью класса низкоуровнего интерфейса. В коде выложенны два класса Menu (MIDlet) и класс mendraw (Canvas), В классе mendraw в методе paint() , рисуется 3 прямоуголика, когда переменная индекс равна номеру прямоугольника то прямоугольник заливается указанным цветом! А вот и код:
Вместо прямоугольников Вы можете всавлять свои картинки, рисовать овалы, строки и многое другое! Все зависит от Вашего воображения! Оцените пожалуйста урок. |
Автор: BackUp 16.7.2006, 11:02 |
Привет, интересная темка, а пример с картинками можешь дать? |
Автор: Samuil 16.7.2006, 14:29 |
Да просто пишешь: try{ Image img=Image.createImage("..."); }catch(IOException e){} public void paint(Graphics g){ g.drawImage(img,x,y,0); } И все! Вот у тебя картинка! правда надо в методе KeyPressed() указать про прорисовку рисунка! |
Автор: Samuil 16.7.2006, 14:49 |
BackUp, А тема то как? Понравилась? |
Автор: Zamuta 18.7.2006, 13:45 |
Юзайте J2MEPolish, реально красивого меню с нуля тяжело написать, хотя никто не запрещает. Сам давно пользуюсь J2MEPolish очень нравится........советую..... Давно пора развивать эту тему........ |
Автор: W0LF 18.7.2006, 17:55 |
А разве он не платный? бесплатный он только для freeware... |
Автор: Samuil 18.7.2006, 23:11 |
Привет! Ну я всего лишь примерчик привел как легко создать графическое меню, а все остальное зависит от вашего воображения! ![]() ![]() |
Автор: 02077461 26.7.2006, 10:05 |
Тема интересная, но реализация, откровенно, слабая. Меню не гибкое, объект не инкапсулирован. А что делать, если тебе надо в RunTime изменить меню?. Понятно, что это простой пример, однако он далеко не лучший. P.S. не мешало бы еще узнать о name conversion от разработчиков. |
Автор: Samuil 26.7.2006, 11:50 | ||
02077461,
Но я и не пытался создать крутое меню с крутой реалицацие ![]() ![]() |
Автор: 02077461 26.7.2006, 12:05 | ||||
Нет, как раз таки это не должно быть интересно. Думаю, что со мной согласяться, что лучше учиться на хороших примерах, нежели на быстрых реализациях. Не претендую на хороший пример, однако хочу показать как я решал подобную задачу. Прошу не судить строго, это было давно, и подходил сгаряча, без этапа проектирования.
MenuItem
К остальному относитесь как к черному ящику. Да пусть не пугает вас обилие геттеров и сеттеров. Хотя, конечно же, было бы лучше создать интерфейс типа GPaintable и реализовывать его и в GMenu и в GMenuItem, но, как я уже сказал, было это давно. Теперь можно было бы и исправить. |
Автор: Samuil 26.7.2006, 13:56 |
Сейчас откомпилю посмотрю ![]() |
Автор: 02077461 26.7.2006, 14:16 |
Для компиляции, боюсь, тебе придеться многое менять. Главное -- посмотри на идею. |
Автор: W0LF 26.7.2006, 20:18 | ||
А чего ж тогда сам так строго судишь новичков? |
Автор: Samuil 26.7.2006, 23:07 |
Да ладно вам ребят, Вы лучше туториал зацените ![]() |
Автор: 02077461 27.7.2006, 09:08 |
Сужу не новичков, а подход. Как можешь видеть, код мой нуждаеться в некоторой доработке, но я показал метод. И если кто нибудь, например Samuil, доведет его до ума, и выложит здесь вычещенный код, буду весьма рад. Подчеркиваю: я не сужу реализацию, я лишь выразил свое мнение о методе. Кто не согласен с ним, пусть выскажет и приведет свой метод, главное не переходить на личности. |
Автор: Samuil 27.7.2006, 11:16 |
02077461, Это даже хорошо что каждый приводит свой вариант кода, зто большое плюс для начинающих ![]() |
Автор: 02077461 27.7.2006, 12:00 |
Еще раз: не вариант кода, а идея варианта решения задачи. С точки зрения решения одной задачи твой код вполне работоспособен и наверняка удовлетворяет твои потребности. Но, что бы пользоваться твоим кодом, мне необходимо иметь код, а не класс или библиотеку. Проанализировать его работу, а не прочитать документацию (или просто пользоваться в IDE автоокончанием строк, так как можно понять, что метод addItem(String item) врядли будет обнулять меню или, к примеру, менять его цвет), и модифицировать код, добавляя необходимые пункты. Это не говоря о гибкости метода. А если нам надо загружать пункты меню из конфигурационного XML файла? И, опережая замечания и остроты хочу заявить, что я не критикую, а разьясняю свою точку зрения по данному вопросу. Samuil, представь, что ты хочешь разведать маневры армии противника (или приятеля). Ты внимательно наблюдаешь и, желая увеличить производительность собственных войск, начинаешь перенимать опыт. Будешь ли ты записывать каждый шаг каждого солдата, теряя из виду общие перемещения войск, всю тактику. Важна тактика. Но!. Конечно же, если твои "солдаты" подчиняясь твоим приказам будут перемещаться по полю непомерно раскидывая ноги, задвая соратников и общим стадом имитируя брачные игры насекомых, то от безукоризненной тактики не будет никакого проку. Резюмирую: зри не в код. А вообще, куда нравиться, туда и зри. У тебя, кстати, получилось откомпилировать пример? |
Автор: javastic 31.7.2006, 14:49 |
Моё мнение: на определённом этапе развития нужен материал доступный для понимания и освоения. |
Автор: Samuil 1.8.2006, 09:23 |
javastic, W0LF, 02077461, Спасибо за оценку ![]() |
Автор: Zamuta 14.8.2006, 16:13 |
Ребята, посмотрите пжста. У меня при установке j2mepolish-1.2.4 при выборе опции Commercial / None - GPL я ввожу любые 12 символов и продолжаю установку. Дальше он не про что не говорит, но в манифесте записей пока не смотрел, поэтому пока не знаю оставляет он там свои записи или нет. Так сказать, информация для размышления ...... |
Автор: olegrolik 11.2.2007, 19:44 | ||
Что значит объект не инкапсулирован? Я так понял из дальнейших объяснений, что в хорошем стиле, этот интерфейс следует писать как библиотеку (для лёгкого изменения)? Это и есть инкапсуляция? |
Автор: everyone 12.2.2007, 00:37 | ||
Инкапсуляция - это сокрытие методов и переменных объекта. Смысл её в том, чтобы можно было работать с классом не зная его реализации, посредством интерфейса, предоставленного разработчиком. К тому же это плюс к безопастности и устойчивости кода к ошибкам. Ответ здесь таков, что просто необходимо написать интерфейс, а в качестве единичного класса или библиотеки это будет представлено - совершенно безразлично. |