freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

flashactionscript30游戲編程實訓(xùn)指導(dǎo)手冊2-資料下載頁

2024-11-08 07:55本頁面

【導(dǎo)讀】計算機工程系數(shù)字媒體技術(shù)教研室。游戲編碼實訓(xùn)指導(dǎo)手冊。程序設(shè)計實踐與游戲編碼

  

【正文】 論的顯示列表 (display list)?!癲isplay list”術(shù)語是一個新增的,但是如果你使用 Flash 已經(jīng)有一段時間了,它不應(yīng)當(dāng)是一個完全陌生的概念。把你影 片中的所有可視對象想為一個樹形。樹的最底部是舞臺,它默認狀態(tài)就是可視的。在舞臺上,程序設(shè)計實踐與游戲編碼指導(dǎo)手冊 21 你可能還有幾個影片剪輯或其它類型的可視對象 (文本域,圖形等等 )。當(dāng)你將他們加入到舞臺上時,他們也會變成可視的。在那些影片剪輯內(nèi)部可能還會有其它的影片剪輯或其它的可視對象,并且在其它的內(nèi)部也可能會有。這就是最基本的顯示列表 (display list)。 在 AS3 中,當(dāng)你創(chuàng)建一個新的影片剪輯,精靈,或其它的顯示( display)對象時,它不會自動的加入到顯示列表 (display list)中。注意在剛剛給出的 sprite 范例中, 當(dāng)創(chuàng)建精靈 (sprite)時沒有提到過父級 (parent)或是深度 (depth)。它們是可以存在的但并不是在顯示列表 (display list)中被操作的。 如果從字面意義上理解 “stage”(舞臺),你可以想象那些對象就是幕后的演員,收起翅膀,懸在舞臺的上空,或是想象為趴在地底下。你不能看見他們,但是他們都在那里,繁忙的準(zhǔn)備著他們的入場,到那時他們將跳上舞臺并且真實的顯示出來。 現(xiàn)在為止,我們已經(jīng)使用了樹的比喻和一個劇院的比喻 還有其它的比喻嗎?我們也可以將顯示列表(display list)想象為一個大家庭,一個這樣的 parent/child/sibling 家族關(guān)系。當(dāng)你加入某些東西到顯示列表(display list)中,對象將被加入到父級 (parent)中,那么新加入對象就是父級的兒子。如此這樣,當(dāng)你增加一個對象到列表中時它是有理性的。你需要使用 addChild 方法來完成。 你的文檔類 (document class)就象是一個樹的根 (或是所有可視對象的偉大的父親,如果你愿意 )。它是自動可視的,然后你開始為它加入孩子。因此,如你看到的之前的范例,要使精靈( sprite)或其它顯示 對象 (display object)可視,傳遞給它一個新創(chuàng)建的精靈 (sprite): var mySprite:Sprite = new Sprite()。 (0xff0000)。 (0, 0, 40)。 ()。 addChild(mySprite)。 用戶交互操作 用戶交互是基于用戶事件,它們產(chǎn)生 于鼠標(biāo)事件和鍵盤事件。讓我們快速的過一遍各種用戶事件和它們的處理者 (handler)。 鼠標(biāo)事件 鼠標(biāo)事件在 AS3 中已經(jīng)發(fā)生了激動人心的改變。在 AS3 中要響應(yīng)鼠標(biāo)事件,需要鼠標(biāo)的光標(biāo)停放在可視的顯示對象( display object)內(nèi)容上。 鼠標(biāo)事件的名稱被定成字符串,這在前面的內(nèi)容中我們已經(jīng)提到過,最好的方法是使用 MouseEvent的屬性以保證不會出錯。下面是 MouseEvent 類中可用的鼠標(biāo)事件: CLICK DOUBLE_CLICK MOUSE_DOWN MOUSE_MOVE 程序設(shè)計實踐與游戲編碼指導(dǎo)手冊 22 MOUSE_OUT MOUSE_OVER MOUSE_UP MOUSE_WHEEL ROLL_OUT ROLL_OVER 這些屬性自身名稱就是很好的解釋。如果要感覺一下他們,你可以創(chuàng)建和編譯下面的類,它將 trace 出精靈 (sprite)上發(fā)生的每一個鼠標(biāo)事件。 package { import 。 import 。 public class MouseEvents extends Sprite { public function MouseEvents() { init()。 } private function init():void { var sprite:Sprite = new Sprite()。 addChild(sprite)。 (0xff0000)。 (0, 0, 50)。 ()。 = / 2。 = / 2。 (, onMouseEvent)。 (, onMouseEvent)。 (, onMouseEvent)。 (, onMouseEvent)。 (, onMouseEvent)。 (, onMouseEvent)。 (, onMouseEvent)。 (, onMouseEvent)。 (, onMouseEvent)。 (, onMouseEvent)。 } public function onMouseEvent(event:MouseEvent):void { trace()。 } 程序設(shè)計實踐與游戲編碼指導(dǎo)手冊 23 } } 注意,這個類對每一種事類型使用了同一個處理者 (handler),只是簡單的 trace 出被發(fā)送出來的事件類型。 鼠標(biāo)位置 除了鼠標(biāo)事件,還有兩個重要的屬性是可能的,它們是來自文檔類 (document class)或其它顯示對象( display object)用來檢測當(dāng)前鼠標(biāo)光標(biāo)的位置: mouseX 和 mouseY。注意他們是影片剪輯的屬性,返回是鼠標(biāo)相對于 剪輯注冊點的位置。例如,如果你有一個名為 sprite 的精靈在舞臺上的位置為 100,100,鼠標(biāo)光標(biāo)的位置在 150,250,你會得到下面的結(jié)果: mouseX is 150. mouseY is 250. is 50. is 150. 注意影片剪輯是如何得出鼠標(biāo)光標(biāo)在它自身上的位置的。 鍵盤事件 鍵盤事件是另一部分在 AS3 中被整理的部分。鍵盤事件的名稱,就象鼠標(biāo)事件一樣,被定義成字符串,但他們?nèi)允?KeyboardEvent 類的屬性。他們只 有兩個 : KEY_DOWN KEY_UP 你可以在一個指定的對象上偵聽鍵盤事件,就象我們前面講到的偵聽鼠標(biāo)事件一樣。為了做到這一點,然而,你需要先使對象獲得焦點以使它可以捕獲那些事件。你可以象下面這樣書寫: = sprite。 而在許多案例中,只記得偵聽鍵盤事件卻忽視的它的焦點。要做到這一點,你可以直接在舞臺上偵聽鍵盤事件。下面是一個范例示范: package { import 。 import 。 public class KeyboardEvents extends Sprite { public function KeyboardEvents() { init()。 } private function init():void { (, onKeyboardEvent)。 程序設(shè)計實踐與游戲編碼指導(dǎo)手冊 24 (, onKeyboardEvent)。 } public function onKeyboardEvent(event:KeyboardEvent):void { trace()。 } } } 鍵盤代碼 通常,你想知道的并不只是一個鍵子被按下去或放出,而是想知道它是哪一個鍵子。有兩種方法可以讀取鍵盤事件函數(shù)中的信息。 在之前我們討論事件的過程中,我說過一個事件處理者 (handler)接收傳過來的一個事件對象,這個事件對象中包含著剛剛發(fā)生的事件的數(shù)據(jù)信息。在一個鍵盤事件中,有兩個屬性與事件中的按鍵有關(guān): charCode和 keyCode。 charCode 屬性給出的是真實的描述鍵子的字符。例如,如果用戶在鍵盤上按下 “a”鍵 ,charCode 將包含這個字符串 “a”。如果用戶同時也 按下了 Shift 鍵, charCode 將包含的是 “A”。 KeyCode 包含的是描述按下鍵子的物理鍵值。如果一個用戶按下 “a”鍵, keyCode 將包含數(shù)值 65,會忽視其它同時按下的按鍵。如果用戶同時按下 Shift 和 “a”,你需要兩個鍵盤事件:一個是 Shift( keyCode 16)和另一個是 “a”(65)。 類也有一些屬性可用于一些數(shù)字鍵,因此你不需要記住它們,例如, 等于數(shù)值 16,因些你可檢測 keyCode 是否等于 來發(fā)現(xiàn) Shift 鍵是否被按下。 你可以通過互動實例來學(xué)習(xí)。 互動操作實例學(xué)習(xí) 交互實例一:通過按鈕控制物體移動 本例展示了通過 5 個按鈕控制物體的運動軌跡。通過四個方向按鈕控制四個方向的移動,中間的按鈕控制控制物體轉(zhuǎn)彎。 場景布置: 程序設(shè)計實踐與游戲編碼指導(dǎo)手冊 25 程序界面 ( a) ( b) 中間按鈕表示是否要轉(zhuǎn)彎,( b)狀態(tài)表示要轉(zhuǎn)彎 場景:從圖中可以看出我們需要創(chuàng)建三種類型的按鈕和一個甲蟲的影片剪輯。 代碼分析: 那么在設(shè)計程序之前,我們回顧一下我們進行面向?qū)ο蟪绦蛟O(shè)計首先要做什么呢? 當(dāng)然我們要首先確定這個對象有哪些屬性,也就是說哪些信息能表示對象的狀態(tài),在本實例中我們是這樣設(shè)計的: // 屬性(分別記錄哪個按鈕被按下了) : public var up:Boolean = false。 public var down:Boolean = false。 public var left:Boolean = false。 public var right:Boolean = false。 // mode 表示是否要轉(zhuǎn)彎, speed 表示小蟲移動的速度 public var mode:Boolean = true。 public var speed:Number = 7。 確定屬性之后,我們應(yīng)該確定哪些函數(shù)將對這些屬性進行操作。在這之前,我們先了解一下用戶交互。不難發(fā)現(xiàn)該程序由來五個按鈕來控制,五個按鈕將產(chǎn)生九個事件來實現(xiàn)用戶交互: //up_btn, down_btn, left_btn, right_btn, toggle_btn 分別是向上按鈕對象,向下按鈕對象,向左按鈕對象,向右按鈕對象,中間按鈕對象。 //以下代碼表示當(dāng)按鈕被按下時,去執(zhí)行相應(yīng)的函數(shù),通常稱之為 事件偵聽。 (,clickHandler,false,0,true)。 (,clickHandler,false,0,true)。 程序設(shè)計實踐與游戲編碼指導(dǎo)手冊 26 (,clickHandler,false,0,true)。 (,clickHandler,false,0,true)。 (,clickHandler,false,0,true)。 //以下代碼表示當(dāng)按鈕彈起時,去執(zhí)行相應(yīng)的函數(shù), (,pressHandler,false,0,true)。 (,pressHandler,false,0,true)。 (,pressHandler,false,0,true)。 (,pressHandler,false,0,true)。 接下去我們?nèi)タ纯串?dāng)按鈕被按下或彈起的時候又發(fā)生了什么呢: protected function clickHandler(event:MouseEvent):void { switch( ) // 表示產(chǎn)生事件的對象 { case up_btn: up = false。 break。 case down_btn: down = false。 break。 case left_btn: left = false。 break。 case right_btn: right = false。 break。 case toggle_btn: mode = !mode。 break。 } } protected function pressHandler(event:MouseEvent):void { switch( ) 程序設(shè)計實踐與游戲編碼指導(dǎo)手冊 27 { case up_btn: up = true。 break。 case down_btn: down = true。 break。 case left_btn: left = true。 break。 case right_btn: right = true。 break。 } }
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1