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

圖1 創(chuàng)建標(biāo)注對(duì)話窗口
[1b] 2、編寫相關(guān)的ActionScript代碼[/1b]
打開“標(biāo)注”按鈕的動(dòng)作面板,輸入以下ActionScript代碼:
on (release) { //鼠標(biāo)釋放時(shí)觸發(fā)
input_mc._visible = 1; //開啟標(biāo)注的對(duì)話窗口
}
打開“拾取標(biāo)注點(diǎn)”按鈕的動(dòng)作面板,輸入以下ActionScript代碼:
on (release) { //鼠標(biāo)釋放時(shí)觸發(fā)
_root.map_mc.onMouseDown = function () { //當(dāng)鼠標(biāo)按下時(shí)觸發(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)沒(méi)有這么簡(jiǎn)單;因?yàn)槲覀兺ǔJ窃谥付ǖ牡攸c(diǎn)上標(biāo)注地名名稱,因而需要對(duì)地圖進(jìn)行縮放、移動(dòng)等操作;而單純用_xmouse和_ymouse是無(wú)法捕捉正確的坐標(biāo)值,必須依靠_xscale、_yscale、_width、_hight、_x、_y等屬性值去糾正因操作地圖產(chǎn)生的偏差。而相關(guān)的公式因不同的地圖結(jié)構(gòu)各不相同,無(wú)法在本例中給出通用的代碼。以下是筆者在制作深圳地圖時(shí)使用的相關(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)的同時(shí)還可以直接在地圖上顯示一個(gè)標(biāo)記,可以加入以下代碼,用一個(gè)紅色的圓點(diǎn)表示:
_root.map_mc.createEmptyMovieClip("dzpot_mc", this.getNextHighestDepth()); //畫一個(gè)圓點(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號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
