2011-12-21 1 views
2

JSNI 기능을 사용하여 매우 유용한 Canvas 및 Animation 라이브러리를 GWT로 이식하고 있습니다.GWT의 EasleJS 라이브러리에서 MouseEvent 생성자를 래핑하는 방법은 무엇입니까?

/** 
* 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 생성자에 성공적으로 피드 하시겠습니까?

FYI : Timelip의 GWT 포트 인 Easeljs (0.2.1)를 포크했고 최신 이젤 (0.4.0) 기능을 포함하도록 업데이트했습니다. https://github.com/timknip/easel-gwt

EDIT : 네이티브 이벤트가 자바로 작성한 함수라고 생각하십니까? 어딘가에 캔버스를 클릭 할 때 ONMOUSEUP 이벤트를 추가하고 로직을 "onClickSomeButton()"이라는 함수에 보관하면이 생성자의 매개 변수로이 메서드를 전달 하시겠습니까? 나는 Java가 매개 변수로 메소드를 전달할 수 있다고 생각하지 않지만 일부 추상 GWT 클래스를 확장하여이를 감쌀 수있는 방법이 없다고 생각하십니까?

답변

0

모든 JavaScript 함수는 객체로 취급되므로 오버레이 유형 (JavaScriptObject)으로 전달하거나 기본 유형 (JavaScriptObject 자체)으로 전달할 수 있습니다.

이와 같은 문제가 발생하면 자바 스크립트 레이어에서 하나의 인터페이스로 정의하고 자바 레이어에서 하나의 메소드를 정의하고 그 아래에 JSO를 래핑하는 핸들러 (자바 스크립트 이벤트 핸들러)를 자바 스크립트 레이어에서 함수로 취급하는 것이 가장 좋습니다.

자세한 내용은 Google's docs on overlay types을 참조하십시오.

+1

정말 고마워요. 문서를 검토 한 결과 필자는 오버레이 유형이 정확히 무엇인지 알았고 응답은 내 코 바로 아래있었습니다. 대단히 감사합니다. 이것은 언젠가 나에게 문제가되었습니다. :) – LoneWolf

관련 문제