Как обернуть конструктор MouseEvent из библиотеки EasleJS в GWT? - PullRequest
2 голосов
/ 21 декабря 2011

Я портирую те же очень удобные библиотеки Canvas и Animation на GWT, используя функцию JSNI.Будучи первой библиотекой, которую я упаковываю, я мог бы немного помочь с этим конкретным конструктором:

/**
* This is passed as the parameter to onPress, onMouseMove, onMouseUp, onMouseDown, and onClick handlers on
* DisplayObject instances.
* By default, mouse events are disabled for performance reasons. In order to enabled them for a specified stage
* set mouseEventsEnabled to true on your stage instance.
* @class MouseEvent
* @constructor
* @param {String} type The event type.
* @param {Number} stageX The mouseX position relative to the stage.
* @param {Number} stageY The mouseY position relative to the stage.
* @param {DisplayObject} target The display object this event relates to.
* @param {MouseEvent} nativeEvent The native DOM event related to this mouse event.
**/
var MouseEvent = function(type, stageX, stageY, target, nativeEvent) {
  this.initialize(type, stageX, stageY, target, nativeEvent);
}
var p = MouseEvent.prototype;

Вы можете просмотреть весь класс здесь: http://easeljs.com/docs/MouseEvent.js.html

Мой вопрос, как сделатьЯ собираюсь передать событие из GWT и успешно передать его конструктору JSNI для этого класса?

К вашему сведению: я разветвил порт GWT Timknip Easeljs (0.2.1) и обновляю его, чтобы включитьпоследние функции мольберта (0.4.0).https://github.com/timknip/easel-gwt

РЕДАКТИРОВАТЬ: Я думаю, что нативное событие будет функция, которую вы написали на Java, правильно?Скажем, вы хотите добавить событие ONMOUSEUP, когда вы щелкаете где-то на холсте, и логика хранится в написанной вами функции, называемой onClickSomeButton (), тогда вы хотите передать этот метод в качестве параметра в этот конструктор?Я не думаю, что Java может передавать методы в качестве параметров, но нет ли способа обернуть это, расширяя некоторый абстрактный класс GWT?

1 Ответ

0 голосов
/ 06 марта 2012

Все функции JavaScript обрабатываются как объекты, так что вы можете просто передать его как тип наложения (расширение JavaScriptObject) или как базовый тип (* JavaScriptObject сам).

При возникновении такой проблемы лучше всего рассматривать обработчик (обработчик событий JavaScript), который отображается как функция на уровне JavaScript, как интерфейс, определяющий один метод на уровне Java и заключающий в себе JSO.

Для получения дополнительной информации см. Документы Google по типам наложения .

...