在上一講中我們介紹了通過調用外部XML文件實現了地名的顯示。在這一講中,我們講解如何通過Flash ActionScript代碼的trace函數實現互動地圖后臺快速標注地名的工作。
[1b]了解trace函數[/1b]
首先我們了解一下trace函數;
我們可以使用 Flash 調試播放器捕獲來自 trace() 函數的輸出并顯示結果。在測試 SWF 文件時,使用此語句可在"輸出"面板中記錄編程注釋或顯示消息。使用 expression 參數可以檢查是否存在某種條件,或在"輸出"面板中顯示值。trace() 語句類似于 JavaScript 中的 alert 函數。可以使用"發布設置"對話框中的"省略跟蹤動作"命令將 trace() 動作從導出的 SWF 文件中刪除。
需要重點提示的是trace()函數只能在“調試播放器”中生效;而在正式發布后,在Flash Player或是Html文件中運行的 SWF 文件是無法顯示輸出結果的;因此,這只是一個對地圖開發者有效的后臺操作的方法。
[1b] 制作步驟:[/1b]
[1b] 1、創建標注按鈕及對話窗口
[/1b][1b]
[/1b]首先我們要創建一個“標注”的按鈕元件,一個名為“input_mc”的影片剪輯作為對話窗口,以及一個名為“input_txt”的動態文本框用以手動輸入地名名稱;如圖1所示:

圖1 創建標注對話窗口
[1b] 2、編寫相關的ActionScript代碼[/1b]
打開“標注”按鈕的動作面板,輸入以下ActionScript代碼:
on (release) { //鼠標釋放時觸發
input_mc._visible = 1; //開啟標注的對話窗口
}
打開“拾取標注點”按鈕的動作面板,輸入以下ActionScript代碼:
on (release) { //鼠標釋放時觸發
_root.map_mc.onMouseDown = function () { //當鼠標按下時觸發事件 var inputX = _xmouse; //用變量inputX 記錄下當前鼠標指針的 X 軸坐標
var inputY = _ymouse; //用變量inputY記錄下當前鼠標指針的 Y 軸坐標 }
}
[1b]注:[/1b]上述代碼中捕捉鼠標指針的XY坐標值只是示意性的,事實上在實用的地圖中遠遠沒有這么簡單;因為我們通常是在指定的地點上標注地名名稱,因而需要對地圖進行縮放、移動等操作;而單純用_xmouse和_ymouse是無法捕捉正確的坐標值,必須依靠_xscale、_yscale、_width、_hight、_x、_y等屬性值去糾正因操作地圖產生的偏差。而相關的公式因不同的地圖結構各不相同,無法在本例中給出通用的代碼。以下是筆者在制作深圳地圖時使用的相關捕捉點的公式,僅能作概念性的參考;
_global.bzX = Math.round(15868.48*(_root._xmouse-_root.map_mc._x+825*_root.map_mc._xscale/100)/_root.map_mc._xscale);
//捕捉X軸坐標
_global.bzY = Math.round(15868.48*(_root._ymouse-_root.map_mc._y+426*_root.map_mc._xscale/100)/_root.map_mc._xscale);
//捕捉Y軸坐標
而在捕捉到指針坐標的同時還可以直接在地圖上顯示一個標記,可以加入以下代碼,用一個紅色的圓點表示:
_root.map_mc.createEmptyMovieClip("dzpot_mc", this.getNextHighestDepth()); //畫一個圓點
_root.map_mc.dzpot_mc.lineStyle(2, 0xff0000, 100); //圓點為紅色,粗細磅值為2
_root.map_mc.dzpot_mc.moveTo(0, 0);
_root.map_mc.dzpot_mc.lineTo(0, 0.1);
_root.map_mc.dzpot_mc._width = _root.map_mc.dzpot_mc._height = 1000/_root.map_mc._xscale; //調整圓點的大小
_root.map_mc.dzpot_mc._x = _root.map_mc._xmouse; //圓點坐標與捕捉點重合
_root.map_mc.dzpot_mc._y = _root.map_mc._ymouse; //圓點坐標與捕捉點重合
本文轉自:http://www.5uflash.com/flashjiaocheng/Flashyingyongkaifa/873.html
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
