Как разработать мультисенсорные приложения в Java?

Просто добавление к исходному ответу. Хотя это будет работать:

MethodInfo method = typeof(Sample).GetMethod("GenericMethod");
MethodInfo generic = method.MakeGenericMethod(myType);
generic.Invoke(this, null);

Также немного опасно, что вы теряете проверку времени компиляции для GenericMethod. Если вы позже выполните рефакторинг и переименуете GenericMethod, этот код не заметит и не будет работать во время выполнения. Кроме того, если есть какая-либо пост-обработка сборки (например, обфускация или удаление неиспользуемых методов / классов), этот код также может сломаться.

Итак, если вы знаете метод, с которым вы связываетесь во время компиляции , и это не называется миллионы раз, поэтому накладные расходы не имеют значения, я бы изменил этот код:

Action<> GenMethod = GenericMethod<int>;  //change int by any base type 
                                          //accepted by GenericMethod
MethodInfo method = this.GetType().GetMethod(GenMethod.Method.Name);
MethodInfo generic = method.MakeGenericMethod(myType);
generic.Invoke(this, null);

Хотя вы не очень красивы, у вас есть ссылка времени компиляции на GenericMethod здесь, и если вы рефакторируете, удаляете или делаете что-либо с помощью GenericMethod, этот код будет продолжать работать или, по крайней мере, ломаться во время компиляции (если, например, вы удалите GenericMethod).

Другой способ сделать то же самое - создать новый класс-оболочку и создать его через Activator. Я не знаю, есть ли лучший способ.

18
задан David Koelle 15 December 2008 в 18:38
поделиться

3 ответа

Вы хотите рассмотреть возможность использования сопрограмм Lua для каждого автономного агента вместо полностью отдельной виртуальной машины. Сопрограммы - более легкое решение, но могут подходить или не подходить для вашего приложения.

Если вы не можете изменить архитектуру, вы можете попробовать LuaJIT . Это может сделать инициализацию достаточно быстрой для ваших целей.

Дополнительные параметры:

  1. Rings : «Rings - это библиотека, которая обеспечивает способ создания новых состояний Lua изнутри Lua. Это также предлагает простой способ связи между создателем (ведущим) и созданным (ведомым) состояниями. "

  2. Плутон :" Все известные мультитач-жесты уже встроены и доступны так же просто. как прослушивание событий мыши (например: component.addGestureListener (..)). Он также имеет граф сцены с аппаратным ускорением, аналогичный JavaFX. Вы даже можете имитировать мультитач-ввод, подключив к своей машине одну или несколько мышей. Проверьте это на http://www.mt4j.org

9
ответ дан 30 November 2019 в 09:19
поделиться

Sparsh находится все еще в моих закладках с прошлого раза, когда я исследовал мультисенсорные решения Java.

, В то время как не столь прямой как типичный слушатель мыши или слушатель щелчка, это все еще обеспечивает разумный интерфейс.

Вам нужен Ваш слушающий класс для реализации sparshui.client.Client, который требует processEvent определение метода.

public void processEvent(int groupID, Event event) {

        if(event instanceof TouchEvent) {
            TouchEvent e = (TouchEvent)event;
            if(e.getState() == TouchState.BIRTH) {
                //do initial touch stuff
            } else if(e.getState() == TouchState.MOVE) {
                //do dragging stuff
            }
        }
        else if(event instanceof DragEvent) {
            DragEvent e = (DragEvent)event;
            //do DragEvent specific stuff
        } else if(event instanceof RotateEvent) {
            RotateEvent e = (RotateEvent)event;
            //do RotateEvent specific stuff
        } else if(event instanceof ZoomEvent) {
            ZoomEvent e = (ZoomEvent)event;
            //do ZoomEvent specific stuff
        }
        //several other gesture types....
}

После этого, необходимо запустить сервер распознавания жеста, передающий в компоненте

new ServerConnection("localhost", objectImplementingClientInterface);

, Рассмотрение примеров кода на сайте должно дать Вам довольно хорошую идею платформы.

5
ответ дан 30 November 2019 в 09:19
поделиться

Как насчет этого: http://kenai.com/projects/macmultitouch

1
ответ дан 30 November 2019 в 09:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: