999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Flash中碰撞檢測技術的研究與應用

2011-02-17 15:48:33明昀
中國科技信息 2011年16期
關鍵詞:飛機設置

明昀

Flash中碰撞檢測技術的研究與應用

明昀

Flash是現今十分熱門的技術,通過Flash可以實現動畫、游戲和交互多媒體等應用,功能強大。

本文重點討論采用Flash技術中使用actionscript進行碰撞檢測,并舉例說明其不同的使用方式,最后通過對一款平面飛行射擊游戲中碰撞檢測的設計,來說明其具體應用方法。

Flash; 碰撞檢測

在Flash actionscript 2.0中我們可以使用MovieClip 類的 hitTest() 方法來檢測 SWF 文件中的沖突。它檢查某個對象是否與影片剪輯有沖突,然后返回一個布爾值(true 或 false)。我們可能想了解是否發生了沖突,以測試用戶是否已到達舞臺上的某個特定靜態區域,或確定一個影片剪輯何時到達另一個影片剪輯。利用hitTest() 方法,可以判定這些結果。可以使用 hitTest() 的參數來指定舞臺上某個點擊區域的 x 和 y 坐標,或者使用另一個影片剪輯的目標路徑作為點擊區域。在指定 x 和 y 時,如果由 (x, y) 標志的點是非透明點,則 hitTest() 返回 true。當目標傳遞給 hitTest() 時,會對兩個影片剪輯的邊框進行比較。如果二者相交,則 hitTest() 返回 true。如果兩個邊框沒有相交,則 hitTest() 返回 false。hitTest具體用法為:

用法 1:根據 shapeFlag 設置,將 x和 y 坐標與指定實例的形狀或邊框進行比較。如果 shapeFlag 設置為 true,則只計算在舞臺上的實例實際占據的區域,并且如果 x 和 y 在任意一點重疊,則返回true 值。此評估對于確定影片剪輯是否處于指定的點擊區域或熱點區域中很有用。參數x為舞臺上點擊區域的 x 坐標,y為舞臺上點擊區域的 y 坐標,x 和 y 坐標都在全局坐標空間中定義,shapeFlag為一個布爾值,指定是計算指定實例的整個形狀(true) 還是僅計算邊框 (false);只有當用x 和 y 坐標參數標志點擊區域時,才可以指定該參數。例如,鼠標控制影片剪輯移動。鼠標在(坐標_xmouse, _ymouse)影片剪輯test_mc上(與test_mc重疊或交叉)時,test_mc向右移動10個像素。此時可以在場景第1幀上使用test_mc執行onEnterFrame事件處理函數,并在函數中使用hitTest進行判斷,即“if (this.hitTest (_xmouse, _ymouse, false))”,如果鼠標坐標與test_mc交叉或重疊(鼠標在test_mc上),則test_mc橫坐標增加10個像素“this. _x += 10”,test_mc橫坐標大于或者等于500個像素時“if (this._x>=500)”,重新設置test_mc橫坐標為0。

用法 2:計算target 和指定實例的邊框,如果它們在任意一點上重疊或交叉,則返回 true。Target為可能與影片剪輯相交或重疊的點擊區域的目標路徑。target 參數通常表示一個按鈕或一個文本輸入字段。例如,要把圓等6個圖形拖到上面對應的文字上。6個圖形分別是tx1_mc~tx6_mc,6個對應的文字都是動態文本,名稱分別是wz1~wz6,每個mc拖動的位置如果出錯了能夠自動回到原來的位置,當6個mc都能正確拖到對應位置上時,主時間軸從第1幀跳到第2幀,并給予文字說明。顯然,此時我們只要在一個mc上的腳本寫對了,其他5個mc就可以很方便的寫出來;在主時間軸第1幀上寫的腳本“stop()”,設置用于記數的變量“i=0”,在圓(tx1_mc)上的腳本使用“on (press)”判斷鼠標按下時進行,并在on語句中把本mc的坐標賦給本mc下的變量x、y,并拖動這個mc,即“startDrag(this, true)”;使用“on (release)”判斷松開鼠標時動作,在做松開動作時停止拖動這個mc,并使用“if (this.hitTest(_root. wz1))”來判斷這個mc和動態文本wz1重疊或相交;相交時,判斷這時如果這個mc上的變量k不為1則主時間軸上的變量i加1,并在這個mc上設置變量k=1(使一個mc拖動正確時,主時間軸上的記數變量i只加1次);如相交時,主時間軸上的記數變量i等于6(圖形都正確拖動完畢),主時間軸跳到下1幀停下;但如果這個mc和動態文本wz1不重疊或相交,那么把這個mc的坐標設置為前面得到的這個mc的坐標的數值;我們可以先檢測一個mc代碼的正確性,然后再把這代碼復制在其他5個mc上,只消把其中的wz1改為相應的wz2~wz6即可。

通過上面研究了解了hitTest的基本用法后,下面就以一款平面飛行游戲中碰撞檢測為例,進一步說明其實際應用:

1、首先確定需要相互碰撞的對象。游戲中主角飛機與所有敵機機身會發生碰撞,被撞后雙方同歸于盡;主角子彈和其他友機子彈會與所有敵機機身發生碰撞,被撞后敵機生命將根據子彈威力扣減,為零則敵機被擊毀;敵機子彈與主角飛機發生碰撞,被撞后主角生命將根據子彈威力扣減,為零則主角被擊毀。

2、設置碰撞范圍。在Flash庫中雙擊子彈元件,進入元件編輯,更改主角子彈圖形為“影片剪輯”,“實例名稱”為“body”,這就是子彈進行碰撞判斷的范圍;同樣,重復此步驟,對其他元件也設置好碰撞范圍,對于飛機元件除了設置好碰撞范圍外,還可以加多一幀,把實例屬性“顏色”為“亮度100%”,這表示是飛機被擊中時進行一次反白顯示。

3、子彈碰撞檢測。在庫中雙擊“敵機子彈(enemy_bullet)”元件,進入元件編輯,新建一圖層,起名為“action”,在該層第1幀按進入動作編輯,輸入代碼“stop ()”,在所有層第20幀處按插入幀,在“action”層第2幀按插入空白關鍵幀,更改“幀標簽”為“end”,在第20幀按插入空白關鍵幀,更改“幀標簽”為“remove”,在第20幀按進入動作編輯,輸入代碼“stop()”和“this. removeMovieClip()”,“remove”標簽表示此幀進行子彈消失的處理;選擇子彈實例,按進入動作編輯,先定義子彈屬性“bullet_power=1”和“bullet_speed=20”,分別表示該子彈的威力和速度;其次需定義子彈飛出畫面時消失,使用“if(元件坐標超過規定xy范圍){ _parent.gotoAndPlay (‘remove’) }”語句設置;最后使用hitTest來判斷是否擊中主角飛機,即使用“if (_parent.body.hitTest(_root.player.body))”語句來判斷當前子彈實例是否進入主角飛機“player”中實例名為“body”的碰撞范圍,如是則根據子彈威力扣主角飛機生命數值,如“_root.player_life-=bullet_power”;按+測試,發現凡是敵機子彈擊中主角飛機,主角飛機都會反白一下,這表示碰撞檢測成功。其他“主角飛機子彈”和“友機子彈”的做法也基本相同,但需要調整相關子彈屬性,同時需要注意與敵機子彈的飛行方向不同。

4、飛機碰撞檢測。在庫中雙擊“敵機(enemy)”元件,進入元件編輯,先在最后一幀設置“幀標簽”為“remove”,加入代碼“stop()”和“this.removeMovieClip()”,表示飛機消失處理;其次選擇飛機實例,按進入動作編輯,同樣先設置好飛機屬性,如:“enemy_life=2”和“score=5”,分別表示敵機生命和擊毀該機得分;接著同樣使用if語句設置好判斷是否飛出邊界,超出則刪除;判斷是否與主角飛機相撞,使用“if(_parent.body.hitTest(_root. player.body))”語句來判斷當前敵機實例是否進入主角飛機“player”中實例名為“body”的碰撞范圍,如進入則兩機同歸于盡,如代碼“_root.player_life-=_root. player_life”;判斷是否被主角或主角友機子彈擊中,這里由于子彈不只一發,因此需要使用“for (i=1; i<=子彈最大數量; i++)”語句進行循環,使用“if(_parent. body.hitTest (_root["player_bullet"+i]. body))”語句來判斷是否與子彈相撞,如相撞則子彈消失,并根據子彈威力扣減自己生命數值;最后判斷自身生命數值是否為0,是則播放爆炸消失效果。

10.3969/j.issn.1001-8972.2011.16.138

猜你喜歡
飛機設置
鷹醬想要“小飛機”
飛機失蹤
環球時報(2022-05-30)2022-05-30 15:16:57
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
國航引進第二架ARJ21飛機
“拼座飛機”迎風飛揚
當代陜西(2019年11期)2019-06-24 03:40:28
7招教你手動設置參數
乘坐飛機
神奇飛機變變變
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
主站蜘蛛池模板: 国产a v无码专区亚洲av| 国产欧美视频在线| 国产亚卅精品无码| 国产精品大尺度尺度视频| 成人在线视频一区| 亚洲视频三级| 亚洲毛片网站| 日韩无码视频专区| 欧美一区二区福利视频| 野花国产精品入口| 免费无码AV片在线观看国产| 国产在线视频福利资源站| 亚洲国产在一区二区三区| 国内精品免费| 中文字幕久久亚洲一区| 日韩无码白| 亚洲精品成人7777在线观看| 日韩成人在线网站| 日韩精品欧美国产在线| 免费在线看黄网址| a亚洲视频| 国产成人综合欧美精品久久| 亚洲国产精品国自产拍A| 性做久久久久久久免费看| 啪啪啪亚洲无码| 九色视频最新网址| 啪啪啪亚洲无码| 免费一级成人毛片| 97久久人人超碰国产精品| 思思热在线视频精品| 亚洲欧州色色免费AV| 日韩精品一区二区三区中文无码| 国产精品无码AV片在线观看播放| 日韩视频免费| 超清人妻系列无码专区| 国产96在线 | 女人18毛片一级毛片在线| 亚洲av成人无码网站在线观看| 欧美精品色视频| 国产成人乱无码视频| 久草热视频在线| 性视频久久| 国产精品蜜臀| 亚洲最大看欧美片网站地址| aⅴ免费在线观看| 97久久免费视频| 亚洲无码高清视频在线观看| 熟女日韩精品2区| 五月婷婷综合网| a亚洲视频| 欧美色丁香| 国内毛片视频| 亚洲h视频在线| 亚洲欧美国产五月天综合| 福利视频99| 呦女精品网站| 国产精品视频白浆免费视频| 香蕉久久国产超碰青草| 国产91导航| 香蕉久久国产超碰青草| 久久久久无码国产精品不卡| 久久综合亚洲色一区二区三区| 成人永久免费A∨一级在线播放| 亚洲第一区在线| 免费观看三级毛片| 亚洲精品手机在线| 风韵丰满熟妇啪啪区老熟熟女| 国产精品分类视频分类一区| 亚洲IV视频免费在线光看| 国产成人精品18| 国产成人免费视频精品一区二区| 2022国产91精品久久久久久| 激情午夜婷婷| 伦精品一区二区三区视频| 国产理论一区| 999福利激情视频| 国产女人综合久久精品视| 亚洲人成网18禁| 深夜福利视频一区二区| 中国美女**毛片录像在线| 亚洲天堂区| 久久综合色视频|