《Flash網(wǎng)絡(luò)編程》PPT課件_第1頁
《Flash網(wǎng)絡(luò)編程》PPT課件_第2頁
《Flash網(wǎng)絡(luò)編程》PPT課件_第3頁
《Flash網(wǎng)絡(luò)編程》PPT課件_第4頁
《Flash網(wǎng)絡(luò)編程》PPT課件_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Flash網(wǎng)絡(luò)編程技術(shù),“網(wǎng)絡(luò)賽車游戲”技術(shù)分析,網(wǎng)絡(luò)應(yīng)用程序系統(tǒng)體系結(jié)構(gòu),點(diǎn)對點(diǎn)結(jié)構(gòu):只有兩個(gè)玩家的一對一游戲系統(tǒng)才采用點(diǎn)對點(diǎn)體系結(jié)構(gòu),兩臺(tái)電腦通常通過調(diào)制解調(diào)器或者串行電纜直接連接,兩個(gè)玩家相互不斷把消息發(fā)送給對方,發(fā)送的消息內(nèi)容則有賴于具體的游戲。這種模式現(xiàn)在用的不多了。,客戶機(jī)-服務(wù)器:客戶機(jī)-服務(wù)器的連接方式和通訊方式都不同于點(diǎn)對點(diǎn)的對等模式,客戶端指的是玩家的計(jì)算機(jī)上安裝的游戲程序,服務(wù)器則是一臺(tái)中心計(jì)算機(jī),它把許多客戶端連接起來,負(fù)責(zé)處理許多客戶端無法完成的工作。當(dāng)客戶端執(zhí)行任務(wù)時(shí),如移動(dòng)或攻擊,那么有關(guān)信息就傳送到服務(wù)器,而服務(wù)器再把這個(gè)信息發(fā)送給其他所有的客戶端。這樣做的好處就是可以是連接到一個(gè)游戲中的人數(shù)不受限制。另外,服務(wù)器還要使所有客戶端保持同步。在客戶端-服務(wù)器結(jié)構(gòu)中,玩家并不對等的直接相互發(fā)送信息給對方,而是任何的動(dòng)作包括移動(dòng)、射擊、甚至對話都必須經(jīng)過服務(wù)器。服務(wù)器也有很多類型,如游戲服務(wù)器、FTP服務(wù)器、HTTP服務(wù)器等。,Internet協(xié)議地址:確定一臺(tái)Internet中的電腦的位置的方法是通過IP地址來定位的。但是,光有IP地址還不夠,計(jì)算機(jī)如何響應(yīng)請求還取決于它的設(shè)置,所以還要使用端口。端口:端口是和IP地址一起使用的一個(gè)數(shù)字。端口好比電視的頻道。很多端口號(hào)是系統(tǒng)為特定的網(wǎng)絡(luò)服務(wù)保留的,如端口80是為HTTP服務(wù)保留的,21號(hào)是為FTP服務(wù)保留的等等,自定義的服務(wù)端口不能和其他正在使用的端口發(fā)生沖突。,防火墻:在Internet上客戶端把信息傳遞給服務(wù)器時(shí)常常要經(jīng)過一個(gè)所謂的防火墻。防火墻是一個(gè)設(shè)備或程序,它是通過封鎖某些端口而不讓信息通過從而阻擋意想不到的黑客發(fā)送給計(jì)算機(jī)的數(shù)據(jù)或者從計(jì)算機(jī)獲取數(shù)據(jù)。標(biāo)準(zhǔn)的防火墻通常是封鎖1023以上的所有端口,這可能給多人網(wǎng)絡(luò)游戲造成問題。因此,為了確保網(wǎng)絡(luò)游戲的正常運(yùn)行,必須關(guān)閉防火墻,否則,游戲就不能使用快速的套接字通信方式,而只能用較慢的HTTP通信方式。,多人FlashFlash有兩種與外部資源通訊的方法:HTTP和套接字(Socket),它們各有優(yōu)缺點(diǎn)。,HTTP:超文本傳輸協(xié)議(HTTP)是Web中計(jì)算機(jī)之間傳輸數(shù)據(jù)的標(biāo)準(zhǔn)方式,它通過向HTTP服務(wù)器(網(wǎng)站)發(fā)送變量來進(jìn)行工作,而服務(wù)器執(zhí)行各種任務(wù)并且把信息反饋給Flash客戶端。HTTP是在向服務(wù)器發(fā)送數(shù)據(jù)時(shí)開始連接,并在結(jié)果返回給Flash客戶端后關(guān)閉連接。他和我們訪問網(wǎng)頁時(shí)使用的是相同的協(xié)議。,在Flash中HTTP信息主要是利用LoadVariables函數(shù)來發(fā)送的,如下面某個(gè)按鈕中的ActionScript腳本:On(release)a=1;b=”HELLO”;LoadVariables(,_root.results,”POST”);,以上代碼創(chuàng)建了兩個(gè)變量a和b,然后通過HTTP將它們到的HTTP服務(wù)器上。在服務(wù)器對這些變量進(jìn)行了處理之后,就會(huì)把結(jié)果返回給_root主時(shí)間線上稱之為results的電影剪輯。,LoadVariables有兩種發(fā)送數(shù)據(jù)的方式:GET和POST,信息通過HTTP發(fā)送時(shí)還會(huì)發(fā)送一些其他信息(如當(dāng)前時(shí)間、用戶地址、參照地址及瀏覽器信息等),這樣就會(huì)使系統(tǒng)繁忙而速度減慢。顯著的缺點(diǎn)就是它的速度和連接問題。另外也意味著服務(wù)器無法主動(dòng)與客戶端進(jìn)行對話。盡管如此,我們還是可以利用制作很多游戲,其好處就是可以順利通過絕大多數(shù)防火墻。由于連接和通信方面的問題,他最適合回合制游戲。,套接字:套接字通信是近來才應(yīng)用到中的通信方法之一,也是最有效的方法之一。套接字連接是通過和一臺(tái)套接字服務(wù)器建立的,服務(wù)器一旦接到連接請求,連接就開始建立,這樣,客戶端和服務(wù)器之間就可以隨時(shí)實(shí)時(shí)傳送任何數(shù)據(jù)。因此套接字是一種客戶端與服務(wù)器之間非常迅速而且穩(wěn)定的通信方式,常被用于制作高速、實(shí)時(shí)的多人游戲。,XMLSocket類可用于在服務(wù)器計(jì)算機(jī)與運(yùn)行FlashPlayer的客戶端之間創(chuàng)建永久套接字連接??蛻舳颂捉幼謱?shí)現(xiàn)了等待時(shí)間較短的數(shù)據(jù)傳輸,例如,實(shí)時(shí)聊天應(yīng)用程序所需的快速數(shù)據(jù)傳輸。,開啟并使用套接字:sock=newXMLSocket();/創(chuàng)建一個(gè)XMLSocket對象functionmyOnConnect(success)/創(chuàng)建一個(gè)函數(shù)用于服務(wù)器返回連接成功信息時(shí)被調(diào)用if(success)trace(“Connected”);elsetrace(“Failed”);functionmyOnXML(doc)/創(chuàng)建一個(gè)函數(shù)用于服務(wù)器給我們發(fā)送信息時(shí)被調(diào)用來處理這些信息(字符串)trace(doc);sock.onXML=myOnXML;/使自定義的函數(shù)成為XMLSocket對象的回調(diào)函數(shù)sock.onConnect=myOnConnect;/使自定義的函數(shù)成為XMLSocket對象的回調(diào)函數(shù)sock.connect(ipaddress,serverport);/向服務(wù)器發(fā)出連接請求,要使用何種通信方法?要由你要制作的游戲類型決定,如果是快速、實(shí)時(shí)的游戲則采用套接字,而如果玩家計(jì)算機(jī)處于防火墻一端則可以使用HTTP方式制作不用實(shí)時(shí)高速結(jié)構(gòu)的游戲。對于flash,我們只能使用客戶端服務(wù)器模式而不能使用對等模式。因?yàn)镕lash不像服務(wù)器,它在沒有建立連接前不能在端口進(jìn)行監(jiān)聽。,數(shù)據(jù)包:數(shù)據(jù)包可以是任何我們所期望的東西,其大小和形狀都會(huì)因?yàn)榘l(fā)送的內(nèi)容不同而有所差異。比如,發(fā)送一個(gè)玩家位置的數(shù)據(jù)包可以表示為:L,p451,x200,y100這就是我們自己定義的在服務(wù)器和客戶端之間傳遞的一個(gè)數(shù)據(jù)包,對我們來說,數(shù)據(jù)包僅僅是一個(gè)字符串,它的意義是由我們自己定義的。上述數(shù)據(jù)包包含的意思是:“Thisisaplayerslocation,Playernumber451isatlocation_x=200,_y=100.”如果數(shù)據(jù)包存儲(chǔ)在一個(gè)名為packet的變量里,那么我們可以這樣把數(shù)據(jù)包發(fā)送給服務(wù)器:sock.send(packet);,數(shù)據(jù)包很簡單,而且不需要大量繁瑣的分析和解釋,只需要幾個(gè)簡單的字符串操作就行了。數(shù)據(jù)包通常是在事件發(fā)生時(shí)發(fā)送的:移動(dòng)開火連接斷開連接聊天消息重新開始游戲按鍵的狀態(tài),設(shè)計(jì)數(shù)據(jù)包時(shí)既要考慮哪些信息可以完全傳遞游戲時(shí)間的內(nèi)容,又不能用過多的信息,以避免占用不必要的帶寬。,服務(wù)器:一般來說,服務(wù)器應(yīng)該運(yùn)行在高性能計(jì)算機(jī)上,對硬件、硬盤空間、網(wǎng)絡(luò)帶寬等有較高的要求,這在資金方面負(fù)擔(dān)較重。當(dāng)然,對于我們開發(fā)的小游戲來說,沒有那么高的要求。有幾點(diǎn)局限性:服務(wù)器連接速度在很大程度上決定了游戲質(zhì)量的好壞;客戶端連接速度也往往會(huì)影響游戲的順利進(jìn)行帶寬。,具體游戲:我們來看看這個(gè)游戲“無線賽車”游戲:你可以駕駛一輛無線電控制的賽車在賽道上環(huán)繞,另外還可以有5個(gè)人參加進(jìn)來,這個(gè)游戲最大允許人數(shù)是6個(gè)。第一個(gè)進(jìn)入游戲的人是指揮官,他有權(quán)讓其他玩家回到起跑線,讓游戲重新開始,這時(shí)在屏幕的中央會(huì)有倒計(jì)數(shù)的秒顯示。在比賽中可能會(huì)出現(xiàn)燃料用完的情況,這時(shí),玩家必須把車開到加油站加油。,賽道所在的比賽主游戲區(qū)域見下圖:工具欄,其中包含一些關(guān)鍵項(xiàng)目:速度表、油表、圈數(shù)計(jì)數(shù)器、聊天對話框、指揮官對話框,游戲的控制:這個(gè)游戲使用方向鍵進(jìn)行控制,非常直觀。賽車的運(yùn)動(dòng)通過速度/角度的方法實(shí)現(xiàn),玩家的速度和角度轉(zhuǎn)化為X和Y軸的速度。這種轉(zhuǎn)化也叫極坐標(biāo)向直角坐標(biāo)轉(zhuǎn)化,變換的公式很簡單,對于每輛賽車都有下面的代碼:dx=vel*Math.sin(ang);dy=vel*Math.cos(ang);,Y,X,dx,dy,ang,V,當(dāng)然,要確定具體的量,需要對vel和ang進(jìn)行控制:maxspeed=12;/Moveifkeysarepressedif(key_Up)vel+=1;if(key_Down)vel-=1;if(key_Left,可以看出,ang和vel使用方向鍵控制的,然后用他們來計(jì)算dx和dy。最后我們在每個(gè)楨中對賽車的當(dāng)前位置加入dx和dy值:_x+=dx;_y+=dy;,碰撞,游戲中有三種形式的碰撞:汽車和草坪的碰撞汽車和障礙物之間的碰撞汽車和汽車之間的碰撞,汽車和草坪的碰撞,汽車和障礙物之間的碰撞,汽車和汽車之間的碰撞,陰影,節(jié)點(diǎn),用節(jié)點(diǎn)判斷汽車是否完成整圈的賽程,多輛汽車,本機(jī)的鍵盤智能控制自己的一輛賽車,其他玩家的賽車是通過其他玩家計(jì)算機(jī)發(fā)送給服務(wù)器再轉(zhuǎn)發(fā)過來的數(shù)據(jù)包里的鍵盤信息控制的,游戲中的數(shù)據(jù)包和通信,客戶端響應(yīng)事件:登錄按鍵的狀態(tài)碰撞汽油耗盡斷開連接聊天消息重新開始游戲,客戶端數(shù)據(jù)包,普通位置數(shù)據(jù)包登錄數(shù)據(jù)包聊天數(shù)據(jù)包重新開始數(shù)據(jù)包,游

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論