![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| tonchitos |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
вы извините что вопрос дурацкий, но я тока приступила к джаве, поэтому прошу простить.
У меня прога на наследование классов. Я должна создать абстрактный класс, Класс содержит следующие поля: координаты геометрического центра фигуры на экране, поле, задающее размер фигуры, поле, задающее угловое положение фигуры, поле, задающее угловую скорость вращения фигуры и поле, определяющее цвет фигуры; методы: конструктор для инициализации полей, абстрактный метод, изменяющий угловое положение фигуры за один шаг поворота, и метод для рисования и стирания фигуры на экране. У меня три фигуры (линия, квадрат, треугольн), они должны вращатся, каждую секунду должны меняццо координаты, для этого ипользую таймер. Что не так: Такое впечатление, что метод, меняющий координаты(step) - не ботает. Таймер работает, но по полнолуниям (когда закрываю метод, меняющий координаты комментариями). Вот простите если сумбурно, наверно в какой нить ерунде дело, но меня заклинило - не вижу.
Это сообщение отредактировал(а) zkv - 15.12.2007, 21:04 -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
||||
|
|||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: нет Всего: 92 |
Переместил из Центра помощи по просьбе tonchitos.
|
|||
|
||||
| Real McCoy |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 28.6.2007 Репутация: нет Всего: 2 |
tonchitos,
В самых первых, я бы перенёс создание объектов TAng, lne, Sqr с начало констуктора после вызова super(), т.к. при создании в конструкторе RemindTask() у класса вызовется paint(), а эти объекты в тот момент ещё не будут существовать. Во-вторых, после данного изменения в конце метода step() (вот на этом месте: pixX[Col] = pixX[0];) возникает java.lang.ArrayIndexOutOfBoundsException, причины которой, думаю, Вы сами сможете найти. |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
Real McCoy, спасибо большое, это правда ляпсусы.
Все равно не ботает, какая то ошибка в методе step, хотя он теперь точно выполняется. Но не пойму что не так. Координаты непрально меняются, хотя аналогичный код на си у меня работал прекрасно. Что я упустила? Насколько я поняла, при первом же заходе в метод, координаты меняются так, что ерундовина какая то.
Добавлено @ 18:20 Я закрыла пока комментариями вращение квадрата и треугольника. Линия сразу превращается в точку, а (если открыть коммент) квадрат с треуг вообще исчезают. Что не так... Это сообщение отредактировал(а) tonchitos - 16.12.2007, 18:21 -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| Real McCoy |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 28.6.2007 Репутация: нет Всего: 2 |
tonchitos,
у Вас draw() метод для объекта Line вызывается только когда Вы создаёте объект Вашего основного класса-контейнера (в его методе paint() явным образом). Поэтому линия отрисовывется (видимо с какими-то начальными нулевыми значениями), после чего больше не перерисовывается. Т.е. надо принудительно вызывать перерисовку линии после каждого пересчёта координат. |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
Real McCoy
если вот добавлю setBackground(Color.red);
вот тут я же не перерисовываю, однако будет мигать - красный - синий то есть перерисовка происходит. дело видимо не в этом. если закрою метод степ, то рисуются с начальными значениями фигуры - нормальные. А метод как то и почему то портит координаты, как мне кажется. Это сообщение отредактировал(а) LSD - 17.12.2007, 15:28 -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| Real McCoy |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 28.6.2007 Репутация: нет Всего: 2 |
tonchitos,
я Вас умоляю: оформляйте код так, чтобы его можно было читать! Я про обрамление кода тэгами разметки форума (над полем ввода справа кновочка "Код"), про отступы и выравнивание и про code conventions. Ну вот, я добавил setBackground(Color.red); (хотя это неправильный подход, лучше уж repaint(); туда воткнуть) и линия через несколько циклов таймера рисуется горизонтально, а ещё через несколько циклов - вертикально. Между этими состояниями она пребывает в виде точки. Мой вывод: неправильно считаются или обновляются координаты. Тут уж Вам самостоятельно надо разобраться. |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
пасиб
-------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |