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招教你手動設置參數
乘坐飛機
神奇飛機變變變
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
主站蜘蛛池模板: 四虎永久免费地址| 国产日韩丝袜一二三区| 伊人91在线| 毛片a级毛片免费观看免下载| 热99re99首页精品亚洲五月天| 精品三级网站| 欧美日韩亚洲国产| 国产粉嫩粉嫩的18在线播放91| 国产91导航| 欧美日韩理论| 亚洲中文字幕在线精品一区| 国产亚洲欧美在线视频| 成人免费黄色小视频| 日韩欧美中文| 在线观看免费国产| 亚洲高清国产拍精品26u| 欧美一级黄片一区2区| 香蕉视频国产精品人| 最新国产高清在线| 日本一本正道综合久久dvd | 久久免费精品琪琪| 欧美精品H在线播放| 国产97视频在线| 动漫精品啪啪一区二区三区| 免费观看国产小粉嫩喷水| 国产尤物视频在线| 亚洲精品国产综合99| 亚洲一区二区黄色| 亚洲Av综合日韩精品久久久| 国产精品林美惠子在线播放| 精品成人一区二区三区电影| 亚洲欧美在线精品一区二区| 九色综合视频网| 亚洲中文久久精品无玛| 91国内外精品自在线播放| 成年午夜精品久久精品| 欧美午夜视频在线| 蜜臀AV在线播放| 自慰网址在线观看| 波多野衣结在线精品二区| 日本成人不卡视频| 第一区免费在线观看| 午夜国产理论| 婷婷五月在线| 欧美高清三区| 毛片一级在线| 国产精品大白天新婚身材| 正在播放久久| 国产一级裸网站| 免费人欧美成又黄又爽的视频| 国产精品免费福利久久播放| 国产成人超碰无码| 免费 国产 无码久久久| 国产一区三区二区中文在线| 国产精品人成在线播放| 亚欧成人无码AV在线播放| 免费看av在线网站网址| 亚洲综合香蕉| 69精品在线观看| 欧美精品在线视频观看| 国产第二十一页| 国内黄色精品| 欧美精品成人一区二区视频一| 午夜视频www| 天堂av综合网| 国产欧美中文字幕| 国产激爽大片高清在线观看| 国产丝袜一区二区三区视频免下载| 色噜噜在线观看| 一本大道香蕉久中文在线播放| 日本不卡在线| 亚洲精品国产首次亮相| 自慰网址在线观看| 一级不卡毛片| 日韩大片免费观看视频播放| 九色视频一区| 91在线国内在线播放老师| 在线观看国产精品第一区免费 | 在线免费亚洲无码视频| 美女亚洲一区| 亚洲男人的天堂久久香蕉| 国产在线精品人成导航|