我使用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类来包装它?答案 0 :(得分:0)
所有JavaScript函数都被视为对象,因此您只需将其作为叠加类型(扩展JavaScriptObject
)或作为基础类型(JavaScriptObject
本身)传递。
当遇到这样的问题时,最好将处理程序(JavaScript事件处理程序) - 作为JavaScript层中的函数出现 - 作为接口,在Java层定义一个方法,并在下面包装JSO。 / p>
有关详情,请参阅Google's docs on overlay types。