На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Hsilgos
  
> Обработка нажатий произвольных объектов на экране , для Android
    Жизнь меняется и мы меняемся вместе с нею... вот теперь пытаюсь немного программировать на Андроиде.

    Суть такая - есть полноэкранное приложение, в нём произвольно плавают какие-то объекты, отображаемые какими-то границами. Нужно чтобы при клике на объект (ну то есть на View приложения) вызывался метод в объекте. Я даже придумал, как это можно сделать если объекты все одинаковые - но у меня получается что объекты разных классов. В С++ я бы с этим разобрался с помощью шаблонов и указателей, а как это сделать в Java - не пойму.
    Да и во всяких "уроках" никто подобным закидонам внимания не уделяет - везде пишется "создавайте компоненты и обрабатывайте методы". Но я не хочу компоненты, я хочу сам хардкорно рисовать! Может кто знает методику, или хотя бы ссылку на хорошую статью (можно не только на русском, но и на английском или украинском :P )?
      То ли я тупизну какую-то спрашиваю, то ли без Вуйки никто в Андроиде не программирует. :scratch:
        Ну я просто координаты и размеры объектов храню, ну и при нажатии пальца проверяю, попал ли палец в координаты и размеры. Ну и параллельно проверяю чтоб был не мультитач.

        Добавлено
        Вообще, мне больше нравится самому контролировать весь процесс взаимодействия палцев и объектов, нежели пользоваться встроенными средствами системы :)
        Но тогда мне приходится и все потоки синхронизировать самостоятельно, а это такой хороший геморрой в яве :)
          если задача абстрактна и конкретной реализации "неких объектов" "отображаемых какими-то границами" еще нет, то вполне тормознутое и нормальное в ява-среде решение - отнаследовать объект от View (в onDraw и отрисовывать его границы, в нем же клик перехватить), насоздавать контролов и двигать их по экрану.

          а координаты нажатия вот например тут есть http://startandroid.ru/ru/uroki/vse-uroki-...abotka-kasanija
            Цитата antonn @
            отнаследовать объект от View (в onDraw и отрисовывать его границы, в нем же клик перехватить), насоздавать контролов и двигать их по экрану.

            Ну у меня уже структура некоторая придумана, поэтому наследование от стандартных компонентов кажется мне унылым. Но вообще наследование - это хорошая идея. Если я все объекты понаследую от некоего базового интерфейса, создам там виртуальный метод для обработки нажатия и реализую его во всех наследованных объектах - то прокатит? :unsure:

            Цитата purpe @
            Ну я просто координаты и размеры объектов храню, ну и при нажатии пальца проверяю, попал ли палец в координаты и размеры.

            Вот это уже интересно получается. Как координаты считать - ясно, а как ты нажатие отслеживаешь? Неужели пробегаешь по всем объектам и советуешься с ними? А если они друг друга перекрывают?... Я вот пытаюсь сделать общую карту экрана, которая несёт в себе области со ссылками и знает какая группа пикселей в данный момент ссылается на тот или иной объект, но не знает ничего о самом объекте. Поэтому мне и интересно вызывать одинаковый метод у многих разнотипных объектов.
            Сообщение отредактировано: Dark_Sup -
              Цитата
              Вот это уже интересно получается. Как координаты считать - ясно, а как ты нажатие отслеживаешь?

              так же как в любой игрушке - пробежать по всем и передать в каждую координату, и пусть объект скажет было ли пересечение. плюс всякие отсечения по области вывода и прочего. если перекрывают - тот что был раньше в списке - тот первый.
                Эх, я думал что за минувшие годы что-то покруче придумали в смысле отделения "объектов" от "представлений". :D Ну ладно, возьму как за базовый способ, спасибо. :yes:
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0722 ]   [ 16 queries used ]   [ Generated: 19.04.24, 00:18 GMT ]