SuperMap.Events

Summary
SuperMap.Events
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.Events SuperMap.Events 构造函数。
Functions
addEventType 在此事件对象中添加新的事件类型,如果这个事件类型已经添加过了,则不做任何事情。
clearMouseCache 清除鼠标缓存。
destroy 移除当前要素element上的所有事件监听和处理。
on 在一个相同的范围内注册监听器的方法,此方法调用register函数。
register 在事件对象上注册一个事件。当事件被触发时,’func’函数被调用,假设我们触发一个事件, 指定SuperMap.Bounds作为‘obj’,当事件被触发时,回调函数的上下文作为Bounds对象,
registerPriority 相同的注册方法,但是在前面增加新的监听者事件查询而代替到方法的结束
triggerEvent 触发一个特定的注册事件.
un 在一个相同的范围内取消注册监听器的方法,此方法调用<unregister>函数。
unregister 反注册

Constants

BROWSER_EVENTS

{Array(String)} 支持的事件。

Properties

fallThrough

{Boolean} 是否允许事件处理之后向上传递(冒泡),为false的时候阻止事件冒泡。

includeXY

{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() 清除缓存偏移(边界元素偏移,元素在页面的位置偏移)。

extensions

{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;

Constructor

SuperMap.Events

SuperMap.Events 构造函数。

Parameters

object {Object} 当前事件对象被添加到的JS对象
element {DOMElement} 响应浏览器事件的dom元素
eventTypes {Array(String)} 自定义应用事件的数组
fallThrough {Boolean} 是否允许事件处理之后向上传递(冒泡),为false的时候阻止事件冒泡
options {Object} 事件对象选项。

Functions

destroy

destroy: function ()

移除当前要素element上的所有事件监听和处理。

addEventType

addEventType: function( eventName )

在此事件对象中添加新的事件类型,如果这个事件类型已经添加过了,则不做任何事情。

Parameters

eventName {String} 事件名。

on

on: function( object )

在一个相同的范围内注册监听器的方法,此方法调用register函数。

Example use

// 注册一个"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);

Parameters

object {Object}

register

register: function ( type,
obj,
func,
priority )

在事件对象上注册一个事件。当事件被触发时,’func’函数被调用,假设我们触发一个事件, 指定SuperMap.Bounds作为‘obj’,当事件被触发时,回调函数的上下文作为Bounds对象,

Parameters

type {String} 事件注册者的名字
obj {Object} 对象绑定的回调。如果没有特定的对象,则默认是事件的object属性
func {Function} 回调函数,如果没有特定的回调,则这个函数不做任何事情
priority {Boolean|Object} 当为true时将新的监听加在事件队列的前面。

registerPriority

registerPriority: function ( type,
obj,
func )

相同的注册方法,但是在前面增加新的监听者事件查询而代替到方法的结束

Parameters

type {String} 事件注册者的名字
obj {Object} 对象绑定方面的回调。如果没有特定的对象,则默认是事件的object属性
func {Function} 回调函数,如果没有特定的回调,则这个函数不做任何事情

un

un: function( object )

在一个相同的范围内取消注册监听器的方法,此方法调用<unregister>函数。

Example use

// 移除"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);

unregister

unregister: function ( type,
obj,
func )

反注册

Parameters

type {String}
obj {Object} 默认为 this.object。
func {Function}

triggerEvent

triggerEvent: function ( type,
evt )

触发一个特定的注册事件.

Parameters

type {String} 触发事件类型。
evt {Event} 事件。

Returns

{Boolean} 返回监听对象,如果返回是faler(假),则停止监听。

clearMouseCache

clearMouseCache: function()

清除鼠标缓存。

destroy: function ()
移除当前要素element上的所有事件监听和处理。
addEventType: function( eventName )
在此事件对象中添加新的事件类型,如果这个事件类型已经添加过了,则不做任何事情。
on: function( object )
在一个相同的范围内注册监听器的方法,此方法调用register函数。
register: function ( type,
obj,
func,
priority )
在事件对象上注册一个事件。当事件被触发时,’func’函数被调用,假设我们触发一个事件, 指定SuperMap.Bounds作为‘obj’,当事件被触发时,回调函数的上下文作为Bounds对象,
registerPriority: function ( type,
obj,
func )
相同的注册方法,但是在前面增加新的监听者事件查询而代替到方法的结束
un: function( object )
在一个相同的范围内取消注册监听器的方法,此方法调用<unregister>函数。
unregister: function ( type,
obj,
func )
反注册
triggerEvent: function ( type,
evt )
触发一个特定的注册事件.
clearMouseCache: function()
清除鼠标缓存。
SuperMap.Events 构造函数。
所有 SuperMap 类的基类。
Close