2

我正在使用 JSNI 功能将同样非常方便的 Canvas 和 Animation 库移植到 GWT。作为我包装的第一个库,我可以对这个特定的构造函数使用一些帮助:

/**
* 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 构造函数?

仅供参考:我已经分叉了 Timknip 的 Easeljs 的 GWT 端口(0.2.1),我正在对其进行更新以包含最新的 Easel 功能(0.4.0)。https://github.com/timknip/easel-gwt

编辑:我认为本机事件将是您用 Java 编写的函数,对吗?假设您想在单击某处的画布时添加一个 ONMOUSEUP 事件,并且逻辑保存在您编写的名为“onClickSomeButton()”的函数中,那么您想将此方法作为此构造函数中的参数传递吗?我不认为 Java 可以将方法作为参数传递,但没有办法通过扩展一些抽象 GWT 类来包装它吗?

4

1 回答 1

0

所有 JavaScript 函数都被视为对象,因此您可以简单地将其作为覆盖类型(扩展JavaScriptObject)或作为底层类型(JavaScriptObject本身)传递。

当遇到这样的问题时,最好将处理程序(JavaScript 事件处理程序)——在 JavaScript 层作为函数出现——作为接口,在 Java 层定义一个方法,并在下面包装一个 JSO。

有关更多信息,请参阅Google 的覆盖类型文档

于 2012-03-06T19:45:01.277 回答