SuperMap. |
|
Constants | |
BROWSER_EVENTS | {Array(String)} 支持的事件。 |
Properties | |
extensions | {Object} Event extensions registered with this instance. |
fallThrough | {Boolean} 是否允许事件处理之后向上传递(冒泡),为false的时候阻止事件冒泡。 |
includeXY | {Boolean} 判断是否让.xy属性自动创建到浏览器上的鼠标事件,一般设置为false,如果设置为true,鼠标事件将会在事件传递过程中自动产生.xy属性。 可根据事件对象的’evt.object’属性在相关的事件句柄上调用getMousePosition函数,如: |
Constructor | |
SuperMap. |
SuperMap.Events 构造函数。 |
Functions | |
addEventType | 在此事件对象中添加新的事件类型,如果这个事件类型已经添加过了,则不做任何事情。 |
clearMouseCache | 清除鼠标缓存。 |
destroy | 移除当前要素element上的所有事件监听和处理。 |
on | 在一个相同的范围内注册监听器的方法,此方法调用register函数。 |
register | 在事件对象上注册一个事件。当事件被触发时,’func’函数被调用,假设我们触发一个事件, 指定SuperMap.Bounds作为‘obj’,当事件被触发时,回调函数的上下文作为Bounds对象, |
registerPriority | 相同的注册方法,但是在前面增加新的监听者事件查询而代替到方法的结束 |
triggerEvent | 触发一个特定的注册事件. |
un | 在一个相同的范围内取消注册监听器的方法,此方法调用<unregister>函数。 |
unregister | 反注册 |
{Boolean} 判断是否让.xy属性自动创建到浏览器上的鼠标事件,一般设置为false,如果设置为true,鼠标事件将会在事件传递过程中自动产生.xy属性。 可根据事件对象的’evt.object’属性在相关的事件句柄上调用getMousePosition函数,如:
function named(evt) { this.xy = this.object.events.getMousePosition(evt) }
这个选项习惯默认为false的原因在于,当创建一个事件对象,其主要目的是管理 在一个div的相对定位的鼠标事件,将其设为true也是有意义的。
这个选项也可以用来控制是否抵消缓存。如果设为false不抵消,如果设为true,用this.clearMouseCache() 清除缓存偏移(边界元素偏移,元素在页面的位置偏移)。
{Object} Event extensions registered with this instance. Keys are event types, values are {SuperMap.Events.*} extension instances or {Boolean} for events that an instantiated extension provides in addition to the one it was created for.
Extensions create an event in addition to browser events, which usually fires when a sequence of browser events is completed. Extensions are automatically instantiated when a listener is registered for an event provided by an extension.
Extensions are created in the SuperMap.Events namespace using SuperMap.Class, and named after the event they provide. The constructor receives the target SuperMap.Events instance as argument. Extensions that need to capture browser events before they propagate can register their listeners events using register, with {extension: true} as 4th argument.
If an extension creates more than one event, an alias for each event type should be created and reference the same class. The constructor should set a reference in the target’s extensions registry to itself.
Below is a minimal extension that provides the “foostart” and “fooend” event types, which replace the native “click” event type if clicked on an element with the css class “foo”:
SuperMap.Events.foostart = SuperMap.Class({ initialize: function(target) { this.target = target; this.target.register("click", this, this.doStuff, {extension: true}); // only required if extension provides more than one event type this.target.extensions["foostart"] = true; this.target.extensions["fooend"] = true; }, destroy: function() { var target = this.target; target.unregister("click", this, this.doStuff); delete this.target; // only required if extension provides more than one event type delete target.extensions["foostart"]; delete target.extensions["fooend"]; }, doStuff: function(evt) { var propagate = true; if (SuperMap.Event.element(evt).className === "foo") { propagate = false; var target = this.target; target.triggerEvent("foostart"); window.setTimeout(function() { target.triggerEvent("fooend"); }, 1000); } return propagate; } }); // only required if extension provides more than one event type SuperMap.Events.fooend = SuperMap.Events.foostart;
on: function( object )
在一个相同的范围内注册监听器的方法,此方法调用register函数。
// 注册一个"loadstart"监听事件 events.on({"loadstart": loadStartListener}); // 同样注册一个"loadstart"监听事件 events.register("loadstart", undefined, loadStartListener); // 同时为对象注册多个监听事件 events.on({ "loadstart": loadStartListener, "loadend": loadEndListener, scope: object }); // 同时为对象注册多个监听事件,多次调用register方法 events.register("loadstart", object, loadStartListener); events.register("loadend", object, loadEndListener);
object | {Object} |
register: function ( type, obj, func, priority )
在事件对象上注册一个事件。当事件被触发时,’func’函数被调用,假设我们触发一个事件, 指定SuperMap.Bounds作为‘obj’,当事件被触发时,回调函数的上下文作为Bounds对象,
type | {String} 事件注册者的名字 |
obj | {Object} 对象绑定的回调。如果没有特定的对象,则默认是事件的object属性 |
func | {Function} 回调函数,如果没有特定的回调,则这个函数不做任何事情 |
priority | {Boolean|Object} 当为true时将新的监听加在事件队列的前面。 |
un: function( object )
在一个相同的范围内取消注册监听器的方法,此方法调用<unregister>函数。
// 移除"loadstart" 事件监听 events.un({"loadstart": loadStartListener}); // 使用unregister方法移除"loadstart" 事件监听 events.unregister("loadstart", undefined, loadStartListener); // 取消对象多个事件监听 events.un({ "loadstart": loadStartListener, "loadend": loadEndListener, scope: object }); // 取消对象多个事件监听,多次调用unregister方法 events.unregister("loadstart", object, loadStartListener); events.unregister("loadend", object, loadEndListener);
移除当前要素element上的所有事件监听和处理。
destroy: function ()
在此事件对象中添加新的事件类型,如果这个事件类型已经添加过了,则不做任何事情。
addEventType: function( eventName )
在一个相同的范围内注册监听器的方法,此方法调用register函数。
on: function( object )
在事件对象上注册一个事件。当事件被触发时,’func’函数被调用,假设我们触发一个事件, 指定SuperMap.Bounds作为‘obj’,当事件被触发时,回调函数的上下文作为Bounds对象,
register: function ( type, obj, func, priority )
相同的注册方法,但是在前面增加新的监听者事件查询而代替到方法的结束
registerPriority: function ( type, obj, func )
在一个相同的范围内取消注册监听器的方法,此方法调用<unregister>函数。
un: function( object )
反注册
unregister: function ( type, obj, func )
触发一个特定的注册事件.
triggerEvent: function ( type, evt )
清除鼠标缓存。
clearMouseCache: function()