openscales基于事件驅(qū)動(dòng),一般對(duì)地圖的操作應(yīng)用openscales已經(jīng)提供了基本的訪問(wèn)框架和部件來(lái)支持不同的應(yīng)用
ClickHandler處于event/mouse包內(nèi),我們遇到要處理點(diǎn)擊地圖捕捉Click,doubleClick,DropDrag時(shí)就會(huì)用到這個(gè)東東了
那很簡(jiǎn)單,我們只需要new ClickHandler(map,false) , 設(shè)置幾個(gè)回調(diào)函數(shù)(click,doubleclick等等),最后調(diào)用這個(gè)handler.active =true即可
啟用這個(gè)handler了。
在地圖上用鼠標(biāo)點(diǎn)擊即可測(cè)試了
注意到ClickHandler里面用到了一個(gè)Timer,覺(jué)得奇怪的
1 protected function mouseUp(evt:MouseEvent):void {
2 if (evt) {
3
4 this.map.removeEventListener(MouseEvent.MOUSE_MOVE,this.mouseMove);
5
6 if (this._downPixel != null) {
7 // It was not a drag, but was it a simple or a double click ?
8 // Just wait for a timer duration to know and call the right function.
9 this._upPixel = new Pixel(evt.currentTarget.mouseX, evt.currentTarget.mouseY);
10 this._ctrlKey = evt.ctrlKey;
11 this._shiftKey = evt.shiftKey;
12 this._clickNum++;
13 this._timer.start();
14 }
15 }
想了一下就明白了期間的用意,看看注釋,目的是為了推遲回調(diào),防止回調(diào)處理繁忙阻塞交互界面