版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、關(guān)于flash,大家或多或少都有所了解。比如上網(wǎng),到處都能看到flash的存在。flash的應(yīng)用也是五花八門。今天我們講的是用flash做電子地圖?,F(xiàn)在在網(wǎng)上隨處都能找到電子地圖,其中大部分都是java來開發(fā)的,其實用flash也可以做電子地圖。且界面還比較漂亮?,F(xiàn)在網(wǎng)上已經(jīng)有用flash做的電子地圖了。且呈發(fā)展趨勢。象"中國電子地圖網(wǎng)"里面的地圖就是用flash做的。還有九江,五邑等地圖也都是用flash來完成的。現(xiàn)在我們就來學(xué)習(xí)用flash做電子地圖,首先要了解電子地圖的功能,最主要的功能就是方便你查找,還有就是可以有選擇性的顯示。比如我到一個城市,我要去一個地方,如果
2、有一張地圖,你需要一點一點的看,還要找怎么去。而電子地圖就不一樣了,你可以搜索,就直接標出那個地方,還可以告訴你幾路公交車到,附近有什么賓館,飯店等等。所以,電子地圖一般要具備的功能是:放大,縮小,移動,地點鏈接(相信介紹),搜索,等一系列功能。這么大的數(shù)據(jù)量是不肯保存在flash里的,從技術(shù)的層面來說,就是要做到數(shù)據(jù)和圖層的動態(tài)載入,實現(xiàn)數(shù)據(jù)的模糊,智能,區(qū)域查詢等功能。廢話少說,首先我們來認識flash的mc(影片剪輯),已經(jīng)做電子地圖所用到的幾個屬性。如下:_x /相對于父級影片剪輯的本地坐標的 x 坐標。如果影片剪輯在主時間軸中,則其坐標系統(tǒng)將舞臺的左 上
3、角作為 (0, 0)。 _y /相對于父級影片剪輯的本地坐標的 y 坐標。如果影片剪輯在主時間軸中,則其坐標系統(tǒng)將舞臺的左 上角作為 (0, 0)。 _width /影片剪輯的寬度,以像素為單位。 _height /影片剪輯的高度,以像素為單位。 _xscale /確定從影片剪輯注冊點開始應(yīng)用的影片剪輯水平縮放比例。默認注冊點為 (0,0)。 _yscale /設(shè)置從影片剪輯注冊點開始應(yīng)用的影片剪輯垂直縮放比例。默認注冊點為 (0,0)。 利用鼠標和鍵盤來完成地圖的
4、放大、縮小、拖動等功能: startDrag 函數(shù) /執(zhí)行 startDrag() 操作后,影片剪輯將保持可拖動狀態(tài)。 stopDrag 函數(shù) /和startDrag是一對函數(shù),用于停止當(dāng)前的拖動操作?;旧暇瓦@么多了,一會遇到那個再詳細講。下面我們一步一步來做電子地圖:一、首先我們打開flash新建一個影片,大小設(shè)為寬:440px 高:316。(根據(jù)你的需要來設(shè)定)。二、然后倒入一張你準備好的地圖,我的是一張880632的(這樣放大時效果會好很多),導(dǎo)入到庫中。然后打開庫,選擇地圖拖入到場景中,轉(zhuǎn)換成影片剪輯,注冊點選則中央,這樣放
5、大縮小就以這個地圖的中央為中心了。取名為map_mc(重要的事下面的名字)。因為程序要控制這個地圖,所以要給他起個名字。三、好了,地圖剪輯建好了,我們就開始用程序控制他了。首先,我們來實現(xiàn)放大縮小。有的介紹的是用_width和_height這兩個屬性,也可以實現(xiàn),但沒有_xscale和_yscale方便。因為_xscale和_yscale直接就是原大小的百分比。新建一個圖層,選中然后在場景中畫個方塊,轉(zhuǎn)換成按鈕(和地圖一樣,不過次選擇的是按鈕)。給按鈕命名為fangda_btn,選擇這個按鈕,打開動作面板寫上如圖的程序:同理建立縮小和還原的按鈕。放大按鈕上的程序:on(press)
6、/當(dāng)鼠標按下的時候執(zhí)行下面的程序 map_mc._xscale=map_mc._xscale+10; /地圖在x軸上的百分比增加10 map_mc._yscale=map_mc._yscale+10; /地圖在y軸上的百分比增加10 縮小按鈕上的程序:on(press) /當(dāng)鼠標按下的時候執(zhí)行下面的程序 map_mc._xscale=map_mc._xscale-10; /地圖在x軸上的百分比減少10 map_mc._yscale=map_mc._yscale-10; /地圖在y軸上的百分比減少10 還原按鈕上的程序:on(press)
7、0;/當(dāng)鼠標按下的時候執(zhí)行下面的程序 map_mc._xscale=100; /地圖在x軸上的原大小 map_mc._yscale=100; /地圖在y軸上的原大小 在時間軸上的程序:(因為拖動的四地圖,不用按鈕,當(dāng)然,其他的也可以寫到時間軸上)map_mc.onMouseDown = function () /當(dāng)鼠標按下的時候執(zhí)行 startDrag(map_mc); /鼠標可以拖動地圖 map_mc.onMouseUp = function () /當(dāng)鼠標彈
8、起(不按時) stopDrag(); /停止拖動 最后,大家可能會發(fā)現(xiàn),如果一直縮小,就會出現(xiàn)問題,后來反而變大了,拖動可以把地圖拖出去,這些都不是我們想要的效果,我們下一次會專門講解這個問題,在這先透露一下,我們下一節(jié)講的是限制放大和縮小,移動的邊界。以及內(nèi)容會隨著地圖的放大縮小自動隱藏和顯示等問題。另外,由于本人也不是很精通,如果哪兒出現(xiàn)錯誤或疏漏之處還請給與指正,歡迎大家一起交流探討。不知道大家看了上一篇有什么感覺,也許對高手來說是太簡單了,但對入門者來說應(yīng)該還可以吧。我們一步一步來深入,以到達真正的電子地圖。 如果大家按上一篇教
9、程做了,就會發(fā)現(xiàn)問題,那就是如果一直縮小,就會出現(xiàn)問題,后來反而變大了,拖動可以把地圖拖出去,這些都不是我們想要的效果。今天我們來解決這些問題,另外還有信息的顯示等一些內(nèi)容。容會隨著地圖的放大縮小自動隱藏和顯示等問題。 好了,廢話少說,下面我們來看看今天要學(xué)習(xí)的主要內(nèi)容: 限制地圖的放大和縮小 限制地圖的邊界 內(nèi)容的顯示和隱藏 兩點間距離的測量
10、 主要用到的actionscript代碼(除上節(jié)講的以外)如下: _visible 一個布爾值,指示影片剪輯是否處于可見狀態(tài)。True 為可見 false 為不可見。也可用0.1表示。 Math.floor() 返回由參數(shù) x 指定的數(shù)字或表達式的下限值。下限值是小于等于指定數(shù)字或表達式的最接近 的整數(shù)。Math.floor(12.5)的值為12
11、160; Math.floor(-6.5)的值為 -7。 Math.pow() 計算并返回 x 的 y 次冪。 Math.pow(x,y)表示x的y次方。 Math.sqrt() 計算并返回指定數(shù)字的平方根。 Math.sqrt(16) 的值為4。 lineStyle() &
12、#160;設(shè)置線條的樣式。lineStyle(3,0xff0000,100)表示要畫的線的粗細為3px,顏色為紅色, 透明度為100,不透明。 moveTo () 將當(dāng)前繪畫位置移動到 (x, y)。如果缺少任何一個參數(shù),則此方法將失敗,并且當(dāng)前繪畫位置 不改變。
13、60; lineTo () 使用當(dāng)前線條樣式繪制一條從當(dāng)前繪畫位置到 (x, y) 的線條;當(dāng)前繪畫位置隨后會設(shè)置為 (x, y)。如果正在其中繪制的影片剪輯包含用 Flash 繪畫工具創(chuàng)建的內(nèi)容,則調(diào)用 lineTo() 方法將在該內(nèi)容下面進行繪制。如果在對 moveTo() 進行任何調(diào)用之前調(diào)用了 lineTo(),則當(dāng) 前繪畫位置默認為 (0,
14、 0)。如果缺少任何一個參數(shù),則此方法將失敗,并且當(dāng)前繪畫位置不改 變。 createEmptyMovieClip () 創(chuàng)建一個空影片剪輯作為現(xiàn)有影片剪輯的子級。此方法的行為類似于 attachMovie() 方法,但是不必為新的影片剪輯提供外部鏈接標識符。新 創(chuàng)建的空影片剪輯的注冊點為左上角。如果缺少任意一個參數(shù),則此方法將失敗。 createTextField ()
15、0; 創(chuàng)建一個新的空文本字段作為在其上調(diào)用此方法的影片剪輯的子級。 removeTextField () 刪除文本字段。只能對使用 MovieClip.createTextField() 創(chuàng)建的文本字段 執(zhí)行此操作。當(dāng)調(diào)用此方法時,將刪除文本字段。 這次的基本上就這么多了,下面我們一步一步來實現(xiàn)今天的內(nèi)容。 1、我們要實現(xiàn)的效果就是一步一步實現(xiàn)數(shù)據(jù)顯示和隱藏,首先我們
16、來創(chuàng)建一個地圖元件,命名為map_mc。雙擊進去編輯這個元件,再創(chuàng)建4個圖層。一共5個圖層,分別為顯示大路,政府單位,中等路,單位,小路。 在各自的圖層分別寫入各自的內(nèi)容。分別命名為:map1_mc、map2_mc、map3_mc、map4_mc、map5_mc。(如右圖) 2、這步我們就要建功能按鈕,我們把他們放到左面,我們先來建一個放大的元件,首先畫一個放大的圖標,按F8,建一個名為 fangda_mc的影片剪輯。雙擊進去編輯,如圖所示。(如下圖) 3、重復(fù)第2步的步驟,分別創(chuàng)建suoxiao_mc(縮小)、yuantu_mc(還原)、tuodo
17、ng_mc(拖動)、celiang_mc(測量)。4、放大、縮小、拖動、還原上節(jié)多已經(jīng)講過了,但隨著功能的增多,會越來越亂,所以我們把代碼統(tǒng)一起來。并盡量把代碼寫到時間軸上,以便管理和修改。首先是初始化地圖的代碼和自定義函數(shù): /停止播放 stop(); /放大,縮小,還原,拖動,測量的控制變量 var chengxu /所有左邊功能按鈕的初始化函數(shù)(把左邊功能按鈕都停止在第一幀) function chushi() &
18、#160;_root.fangda_mc.gotoAndStop(1); _root.suoxiao_mc.gotoAndStop(1); _root.yuantu_mc.gotoAndStop(1); _root.tuodong_mc.gotoAndStop(1);
19、60; le = 0; /執(zhí)行初始化地圖函數(shù)(把先不要顯示的都隱藏) chushimap(); /初始化功能提示函數(shù) function gongnengtishi() _root.fangda_mc.fangda1._visible = 0; _root.suoxiao_mc.suox
20、iao1._visible = 0; _root.yuantu_mc.yuantu1._visible = 0; _root.tuodong_mc.tuodong1._visible = 0; _root.celiang_mc.celiang1._vi
21、sible = 0; /執(zhí)行初始化功能提示函數(shù)(把提示隱藏) gongnengtishi(); /地圖區(qū)域限制函數(shù)(限制地圖脫離屏幕) function xianzhi() _root.onEnterFrame = function() if(map_mc._x>320*map_mc._x
22、scale/200)map_mc._x=320*map_mc._xscale/200 if(map_mc._x<320-320*map_mc._xscale/200)map_mc._x=320-320*map_mc._xscale/200 if(map_mc._y>240*map_mc._yscale/200)map_mc._y=240*map_mc._yscale/200
23、60; if(map_mc._y<240-240*map_mc._yscale/200)map_mc._y=240-240*map_mc._yscale/200 /信息的顯示和隱藏函數(shù)(放大顯示和縮小隱藏) function xianshi() var dx =
24、 _root.map_mc._xscale; if(dx >= 120) _root.map_mc.map2_mc._visible = 1;
25、160; if(dx >= 140) _root.map_mc.map3_mc._visible = 1;
26、160; if(dx >= 160) _root.map_mc.map4_mc._visible
27、= 1; if(dx >= 180)
28、; _root.map_mc.map5_mc._visible = 1;
29、160; else _root.map_mc.map5_mc._visible
30、0;= 0;
31、; else _root.map_mc.map4_mc._visible = 0;
32、60; _root.map_mc.map5_mc._visible = 0;
33、; else _root.map_mc.map3_mc._visible = 0;
34、60; _root.map_mc.map4_mc._visible = 0; _root.map_mc.map5_mc._visible = 0;
35、60; elsechushimap(); /測量函數(shù) function celiang() var sx, sy; _root.map_mc.cl_mc.clear(); _root.map_mc.cl_mc.cl_txt.removeTextField(); sx = _root.map_mc._xmouse; sy = _root.map_mc._ymo
36、use; draw = true; onMouseMove = function () if (draw) _root.map_mc.createEmptyMovieClip("cl_mc",1); _root.map_mc.cl_mc.lineStyle(1, 0x009900, 80); _root.map_mc.cl_mc.moveTo(sx, sy); _root.map
37、_mc.cl_mc.lineTo(_root.map_mc.cl_mc._xmouse, _root.map_mc.cl_mc._ymouse); ttt = Math.floor(Math.sqrt(Math.pow(_root.map_mc.cl_mc._width, 2)+Math.pow(_root.map_mc.cl_mc._height, 2); _root.map_mc.cl_mc.createTextField("cl_txt",1, _root.map_mc.cl_mc._
38、xmouse, _root.map_mc.cl_mc._ymouse-22, 100, 22); _root.map_mc.cl_mc.cl_txt.text = ttt +" m" ; onMouseUp = function () draw = false; ; 5、Map_mc功能的代碼如下(map_mc 的所有功能): _root
39、.map_mc.onPress = function() if(chengxu = "fangda") if(_root.map_mc._xscale < 200)
40、 _root.map_mc._xscale += 10; _root.map_mc._yscale += 10;
41、160; xianshi(); else if(chengxu = "suoxiao") &
42、#160; if(_root.map_mc._xscale > 100) _root.map_mc._xscale -= 10;
43、60; _root.map_mc._yscale -= 10; xianshi();
44、 else if(chengxu = "yuantu") _root.map_mc._xscale = 100;
45、; _root.map_mc._yscale = 100; _root.map_mc._x = 160; _root.map_mc._y = 120;
46、0; chushimap(); else if(chengxu = "tuodong") &
47、#160; startDrag(_root.map_mc,false); xianzhi(); else if(chengxu =
48、60;"celiang") celiang(); _root.map_mc.onRelease = function() stopDrag(); &
49、#160;6、左邊功能按鈕的功能代碼即功能提示代碼: /left的功能代碼 fangda_mc.onPress = function() chushi(); _root.fangda_mc.gotoAndStop(2); chengxu = &quo
50、t;fangda" suoxiao_mc.onPress = function() chushi(); _root.suoxiao_mc.gotoAndStop(2); chengxu = "suoxiao"
51、0; yuantu_mc.onPress = function() chushi(); _root.yuantu_mc.gotoAndStop(2); chengxu = "yuantu" tuodong_mc.
52、onPress = function() chushi(); _root.tuodong_mc.gotoAndStop(2); chengxu = "tuodong" celiang_mc.onPress = function() chushi(); _root.celiang_mc.gotoAndStop(2); chengxu = "celiang" /left的功能提示代碼 fangda
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新進員工質(zhì)量意識培訓(xùn)
- 信用社人力資源新工培訓(xùn)
- 數(shù)控車削加工技術(shù) 課件 項目二 制定數(shù)控車削工藝
- 山東省淄博市第一中學(xué)2024-2025學(xué)年高三上學(xué)期期中考試語文試卷含答案
- T-YNZYC 0079-2023 綠色藥材 蜘蛛香栽培技術(shù)規(guī)程
- T-YNRZ 025-2024 瓜類蔬菜育苗技術(shù)規(guī)程
- 廣西桂林市永??h2024-2025學(xué)年上學(xué)期八年級數(shù)學(xué)期中考試卷(無答案)
- 區(qū)域經(jīng)濟發(fā)展
- 高考歷史二輪復(fù)習(xí)通史版選修四中外歷史人物評說課
- 2024年山東省臨沂市中考英語試題含解析
- 第三單元達標練習(xí)(單元練習(xí))2024-2025學(xué)年統(tǒng)編版語文一年級上冊
- 2024年統(tǒng)編版新教材語文小學(xué)一年級上冊第二單元測試題(有答案)
- 漢語詞匯與文化智慧樹知到期末考試答案章節(jié)答案2024年浙江師范大學(xué)
- 三年級語文上冊第五單元【教材解讀】
- 代持股權(quán)協(xié)議書.doc
- 《提高小學(xué)英語寫作能力的策略研究》方案
- 監(jiān)理公司業(yè)績提成辦法
- 綜合門診部設(shè)置標準
- 工程項目技術(shù)管理人員批評與自我批評
- 進境肉類指定口岸建設(shè)項目可行性研究報告模板
- 油茶營造林作業(yè)質(zhì)量驗收標準及實施辦法
評論
0/150
提交評論