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

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

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