97骚碰,毛片大片免费看,亚洲第一天堂,99re思思,色好看在线视频播放,久久成人免费大片,国产又爽又色在线观看

Flash攝像頭游戲課件的設計之動(dòng)畫(huà)制作論文

時(shí)間:2021-06-10 11:11:42 論文 我要投稿

Flash攝像頭游戲課件的設計之動(dòng)畫(huà)制作論文

摘要:

Flash攝像頭游戲課件的設計之動(dòng)畫(huà)制作論文

      攝像頭游戲是隨著(zhù)技術(shù)的進(jìn)步產(chǎn)生出來(lái)的一種新的游戲形式,它擺脫了鼠標與鍵盤(pán)的限制,給游戲者以全新的互動(dòng)體驗。Flash 8提供的位圖處理功能為Flash攝像頭游戲的實(shí)現提供了可能。將攝像頭游戲技術(shù)引入到Flash課件的開(kāi)發(fā),可以充分發(fā)揮其互動(dòng)性和趣味性,與傳統Flash課件相比,具有其不可替代的優(yōu)勢。該文提出設計Flash攝像頭游戲課件的基本原則,并以《水果樂(lè )園》課件為例,詳細介紹了開(kāi)發(fā)的過(guò)程和主要實(shí)現方法,為攝像頭游戲類(lèi)課件制作提供了參考。

關(guān)鍵詞:Flash;攝像頭游戲;

一、引言

  攝像頭游戲是隨著(zhù)攝像頭的普及和圖形圖像技術(shù)的不斷發(fā)展而出現的。它擺脫了鼠標鍵盤(pán)的限制,給游戲者帶來(lái)全新的游戲體驗,能夠實(shí)現許多傳統游戲無(wú)法實(shí)現的游戲效果。它通過(guò)攝像頭將玩家投影到游戲中,由玩家自己做動(dòng)作與游戲進(jìn)行交互。畫(huà)面中登場(chǎng)的敵人或道具都將對玩家的動(dòng)作即刻做出反應,讓玩家體驗到前所未有的新鮮感。

  Flash課件是用Flash的形式表現教學(xué)內容一種課件形式。Flash課件充分利用了Flash的直觀(guān)性、互動(dòng)性以及娛樂(lè )性,能夠有效的調動(dòng)學(xué)生的學(xué)習積極性,激發(fā)學(xué)生的學(xué)習樂(lè )趣,在當前的教學(xué)過(guò)程中發(fā)揮著(zhù)越來(lái)越大的作用。Flash攝像頭游戲課件整合了攝像頭游戲和Flash課件的優(yōu)點(diǎn),充分體現了寓教于樂(lè )的教學(xué)思想。它帶給學(xué)生全新的游戲感受,能夠極大的激發(fā)學(xué)生的學(xué)習興趣。它能夠激發(fā)學(xué)生的多種感觀(guān)刺激,建立強烈的真實(shí)感,通過(guò)游戲過(guò)程中學(xué)生與游戲的互動(dòng),還能夠促進(jìn)學(xué)生手、耳、眼以及肢體的相互協(xié)調,達到較好的教學(xué)效果。

二、Flash攝像頭游戲課件的設計原則

  Flash攝像頭游戲課件具有較好參與性、體驗性,能夠有效增強學(xué)習效果,提高學(xué)習效率,特別適合于學(xué)生動(dòng)作類(lèi)技能的訓練。在設計的過(guò)程中,應遵循如下原則,體現其獨特的優(yōu)勢。

(1)教學(xué)性原則

  這是所有課件,應用于教學(xué)的最基本的要求,該類(lèi)課件也不例外,在設計的過(guò)程中,必須針對一定的教學(xué)目標,遵循認知過(guò)程的一般規律,組織教學(xué)內容和教學(xué)活動(dòng)。緊密?chē)@以學(xué)生學(xué)習為中心的設計思路。

(2)易用性原則

  攝像頭游戲課件的交互,計算機對于學(xué)習者的動(dòng)作回應,都是建立在動(dòng)作檢測,捕捉學(xué)習者動(dòng)作影像的基礎上。設計過(guò)程中應考慮讓學(xué)習者的操作盡量簡(jiǎn)便,易于上手使用。做好課件使用的幫助或者使用手冊。

(3)科學(xué)性原則

  課件的內容,不能有科學(xué)性的錯誤,這也是設計中基本要求,必須對課件所有呈示的內容,進(jìn)行嚴格仔細的審查,保證學(xué)生看到的所有知識點(diǎn),都必須科學(xué)、準確,一般由課件開(kāi)發(fā)小組中學(xué)科專(zhuān)家把好關(guān)。

(4)藝術(shù)性原則

  如果一個(gè)課件的展示不但取得良好的教學(xué)效果,而日‘使人賞心悅目,使人獲得美的享受,則說(shuō)課件具有較高的藝術(shù)性。這樣的課件是好的內容與美的形式的統一,美的形式能激發(fā)學(xué)生的興趣,史好地表現內容。其表現有:展示的對象結構對稱(chēng),色彩柔和,搭配合理,有審美性。

(5)體驗性原則

  攝像頭游戲課件因其交互的多維化,全方位,檢測學(xué)習者動(dòng)作,使得學(xué)習者的沉浸感很強,要求學(xué)習者的個(gè)人形象和課件環(huán)境融合的過(guò)程中,能讓學(xué)習能有身臨其境的感覺(jué),所以課件在設計的過(guò)程中,注意課件環(huán)境,界面的元素,聲音的效果,都必然能激發(fā)學(xué)習者的投入感。該原則是攝像頭游戲課件設計過(guò)程中最重要的原則,也是整個(gè)課件制作的關(guān)鍵,成敗所在。

三、Flash攝像頭游戲課件的設計與實(shí)現

  在兒童英語(yǔ)教學(xué)中,引入Flash攝像頭游戲課件,使得兒童擺脫鍵盤(pán)和鼠標的單一化的交互方式,而進(jìn)行身體動(dòng)作與計算機的交互,增強兒童學(xué)習的體驗感,能較好的輔助英語(yǔ)的學(xué)習。以下是設計與開(kāi)發(fā)的水果樂(lè )園課件的實(shí)現步驟和主要功能代碼。

1.攝像頭圖像的捕獲

  使用Camera類(lèi)實(shí)現對攝像頭圖像的捕獲。Camera.get()方法返回對用于捕獲視頻的 Camera 對象的引用。當 SWF 文件嘗試訪(fǎng)問(wèn) Camera.get() 返回的攝像頭時(shí),Flash Player 顯示拒絕對話(huà)框,用戶(hù)可從中選擇是允許還是拒絕對攝像頭的訪(fǎng)問(wèn)。setMode()方法將攝像頭的`捕獲模式設置為最符合指定要求的本機模式。//新建一個(gè)Camera對象,實(shí)例名為my_cam,并設置對象屬性。var my_cam:Camera = Camera.get();my_cam.setMode(160,120,30,true);

2.攝像頭圖像的顯示

1)顯示圖像

  若要實(shí)際開(kāi)始捕獲視頻,必須將 Camera 對象附加到 Video 對象。attachVideo(source:Object) : Void指定將在舞臺上的 Video 對象的邊界內顯示的視頻流 (source)。//新建一個(gè)Video對象,將Camera對象附加到Video上。var my_video:Video;my_video.attachVideo(my_cam);

2)水平翻轉圖像

  由于攝像頭中看到的圖像與游戲者本人的方向相反。為了方便游戲者操作游戲,在加載圖像時(shí)應該把圖像左右翻轉。這一操作非常重要,將直接影響游戲者的游戲體驗。

  Video._rotation 屬性可以實(shí)現對Video圖像的旋轉,但是無(wú)法實(shí)現左右翻轉的效果。

       Video._xscale 屬性指示從 Video 對象注冊點(diǎn)開(kāi)始應用的 Video 對象的水平縮放比例 。當x軸的水平縮放比例為-100時(shí),則可以實(shí)現對Video對象的水平翻轉。默認注冊點(diǎn)為 (0,0)?s放本地坐標系統將影響 _x 和 _y 屬性設置,這些設置是以整像素定義的。由于翻轉時(shí)是以左上角主測點(diǎn)為中心,因此在水平翻轉之后,Video對象的坐標雖然未發(fā)生改變,但是整體位置向左平移了Video. _width個(gè)像素。因此翻轉之后我們需要設置Video的新坐標為Video._x = Video._x+Video._width。

3.獲取圖像信息

  要對獲取的圖像進(jìn)行分析,必須將從攝像頭獲取的圖像信息提取出來(lái)。在Flash8中, Bitmap對象存儲了圖像中各點(diǎn)的RGB通道信息以及Alpha通道信息,可以使用new方法建立一個(gè)Bitmap對象。然后使用draw()方法提取某一時(shí)刻video對象中的像素信息。

  draw(source:Object,[matrix:Matrix],[colorTransform.:ColorTransform], [blendMode:Object], [clipRect:Rectangle], [smooth:Boolean]) : Void使用 Flash Player 矢量呈現器在目標圖像上繪制源圖像。使用 Matrix、ColorTransform、BlendMode 對象以及目標 Rectangle 對象來(lái)控制呈現的執行方式;蛘咭部梢灾付ǹs放時(shí)是否應對位圖進(jìn)行平滑處理。這只適用于當源對象是 BitmapData 對象時(shí)的情況。

  import Flash.display.BitmapData;

  //創(chuàng )建BitmapData對象Var snapshot:BitmapData=newBitmapData(output_vid._width,output_vid._height);

  //從my_video獲取當前圖像now.draw(my_video);

4.運動(dòng)檢測的實(shí)現

  該部分是整個(gè)攝像頭游戲實(shí)現的核心。主要利用了Flash 8的位圖處理功能,即BitmapData類(lèi)。

1)基本思路

  我們可以使用getPixel(x,y)獲取前一張圖片上每個(gè)像素點(diǎn)的像素值,然后對比后一張圖片中的每一點(diǎn)的像素值,當像素的亮度差值變化達到一定程度時(shí),認為該點(diǎn)發(fā)生了運動(dòng)變化。通過(guò)這種方式,得到前后兩張圖片的負片效果圖。

  //閥值tolerance=10;

  //獲取當前圖像now某一點(diǎn)的RGB值nc=now.getPixel(x,y);

  //紅色通道nr=nc16&0xff;

  //綠色通道ng=nc8&0xff;

  //藍色通道nb=nc&0xff;

  //計算該點(diǎn)亮度值nl=Math.sqrt(nr*nr + ng*ng + nb*nb)

  //獲取前一快照before同一點(diǎn)的RGB值bc=before.getPixel(x,y);

  //紅色通道br=bc16&0xff;

  //綠色通道bg=bc8&0xff;

  //藍色通道bb=bc&0xff;

  //計算該點(diǎn)亮度值bl=Math.sqrt(br*br + bg*bg + bb*bb);

  //計算亮度值的變化d=Math.round(Math.abs(bl-nl));

  if(dtolerance){//該點(diǎn)發(fā)生了變化 }

  但是這種方法存在計算效率問(wèn)題。按圖像大小為180*160像素,每秒30幀計算,每計算一副圖片需要的計算次數為180*160*30。圖像的像素越大,需要的計算次數就越多。采用隔點(diǎn)檢測的方法可以在一定程度上緩解計算壓力,即每隔n個(gè)像素檢測一次,這樣電腦的計算次數減少為原來(lái)的1/n。

2)改進(jìn)思路

  Flash8提供的圖像混合模式可以解決上面遇到的效率問(wèn)題。Flash8提供了11種圖像混合模式。每一種混合模式可以得到不同的混合效果。Different 混合模式是基于兩張圖片之間的亮度差值進(jìn)行計算,從而得到圖片的負片效果。利用該模式,便可以得到移動(dòng)像素的檢測圖像。

  //將前一張快照before的圖像繪制到當前快照now上,使用different混合模式now.draw(before, new Matrix(), null, "difference");

  圖像中黑色表示沒(méi)有發(fā)生移動(dòng),其他顏色表示發(fā)生了移動(dòng)。由于Flash8提供的混合模式是采用C++編碼實(shí)現的,因此運行效率要比Action Script編碼更加高效。

5.動(dòng)態(tài)顯示檢測圖像

1)處理檢測圖像

  通過(guò)以上兩種方式得到的圖像中色彩范圍較廣,這增加了統計上面的困難。通過(guò)使用 threshold() 方法,可以隔離和替換圖像中的顏色范圍,并對圖像像素執行其它邏輯操作。threshold()函數根據指定的閾值測試圖像中的像素值,并將通過(guò)測試的像素設置為新的顏色值。這樣,便得到了清晰醒目的檢測圖像。

  //將大于閥值0xFF111111的像素替換為綠色。

  myBitmap.threshold(myBitmap, myBitmap.rectangle, myBitmap.rectangle.topLeft, "", 0xFF111111, 0xFF00FF00, 0x00FFFFFF, false);

2)檢測圖像的顯示

  Bitmap對象無(wú)法直接在舞臺上顯示,必須附著(zhù)在MovieClip上面才能顯示。因此可以使用MovieClip類(lèi)的attachBitmap()方法,將獲取的圖像信息顯示出來(lái)。

  //創(chuàng )建一個(gè)影片剪輯來(lái)顯示當前圖像this.createEmptyMovieClip(當前,this.getNextHighest Depth());

  //將攝像頭獲取的圖像顯示在影片剪輯內bitmap_mc.attachBitmap(now,1);

3)檢測圖像的動(dòng)態(tài)顯示

  要實(shí)現檢測圖像的動(dòng)態(tài)顯示,必須不斷的更新當前圖像now和歷史圖像before,并進(jìn)行混合處理?梢园褭z測圖像的功能寫(xiě)成方法snapshot(),每隔100毫秒調用一次。

  偽代碼如下:

  function snapshot() {//獲取當前圖像//獲取檢測圖像//將檢測圖像繪制到//將檢測圖像中RGB超過(guò)閥值0xFF111111的部分替換成綠色//顯示檢測圖像//本次檢測完成之后,當前圖像便成為了歷史圖像。為下一次檢測做好準備。preBitmap = nowBitmap.clone();}

  在該方法中,關(guān)鍵在于每次檢測完成之后當前圖像和歷史圖像的更新。

6.檢測特定區域內的運動(dòng)狀態(tài)

  經(jīng)過(guò)上面幾步操作,已經(jīng)得到了檢測圖像。檢測圖像是對整幅圖像的運動(dòng)情況的反映。在游戲中,經(jīng)常需要檢測的是某一特定區域的運動(dòng)狀態(tài)。

1)檢測某點(diǎn)的運動(dòng)狀態(tài)

  因為已經(jīng)到了檢測圖像,所以在檢測某一點(diǎn)運動(dòng)狀態(tài)時(shí),只需要判斷檢測圖像上該點(diǎn)的RGB值是否大于閥值。

  偽代碼如下:

  pix = myBitmap.getPixel(x, y);if (pix大于閥值) {//該點(diǎn)發(fā)生了運動(dòng)}

2)檢測某區域的運動(dòng)狀態(tài)

  由于燈光因素、攝像頭圖像噪點(diǎn)等干擾因素的存在,每次只檢測一個(gè)點(diǎn)容易造成檢測結果的不穩定。因此,大多采用區域檢測的方式。即在檢測某點(diǎn)運動(dòng)狀態(tài)時(shí),檢測的不僅僅是這個(gè)點(diǎn),而是以該點(diǎn)開(kāi)始的n*n個(gè)像素的區域(n的取值根據實(shí)際情況確定,在檢測點(diǎn)數量較多時(shí),n的值不宜取太大。)。如果檢測區域內的像素點(diǎn)變化數量超過(guò)一定閥值,如60%,則認為該區域發(fā)生了運動(dòng)。

  需要注意的一點(diǎn)是,由于看到的圖像是經(jīng)過(guò)水平翻轉的,但原有的圖像內部坐標系并沒(méi)有發(fā)生變化,因此,檢測時(shí)的取點(diǎn)位置也要水平翻轉。

  //以(rectx,recty)為頂點(diǎn)的rectw*recth的矩形區域的運動(dòng)情況

  function ismove(a, rectx, recty, rectw, recth) {var i, j;

  var sum = 0;

     var pix;

  for (i=1; i=rectw; i++) {for (j=1; j=recth; j++) {//圖像水平翻轉后取點(diǎn)位置相對變化pix = a.getPixel(160-i-rectx, j+recty);

  if (pix132361) {sum++;

  //trace("sum="+sum);

  if (sum(recth*rectw/2)) {return (sum);

  //該區域發(fā)生了運動(dòng)} else {return 0;}}

  在該方法中,檢測圖像、檢測區域頂點(diǎn)坐標、檢測區域大小都為作為變量輸入。采用這種方法,提高了程序的重用性,還可以實(shí)現對運動(dòng)物體的檢測。

3)檢測點(diǎn)的設置

  所謂檢測點(diǎn),實(shí)際是一個(gè)影片剪輯。在進(jìn)行區域檢測時(shí),以該影片剪輯的坐標(x,y)確定檢測區域的坐標位置。檢測點(diǎn)可以是一個(gè)不可見(jiàn)的輔助點(diǎn),也可以是舞臺中運動(dòng)的物體。當把運動(dòng)物體做為檢測點(diǎn)時(shí),隨著(zhù)物體的移動(dòng),檢測區域也隨之移動(dòng),因此可以實(shí)現對運動(dòng)物體的檢測。檢測點(diǎn)的作用:一是可以起到輔助點(diǎn)的作用,簡(jiǎn)化了檢測區域定位的繁瑣工作,使定位操作可視化。二是實(shí)現了代碼的重用,起到了簡(jiǎn)化程序的作用。

7.實(shí)現攝像頭運動(dòng)檢測的控制接口

  游戲中檢測點(diǎn)接口的作用就是返回舞臺中被觸碰的檢測點(diǎn)編號。在接口函數中,調用了以上幾個(gè)功能函數。返回值為檢測點(diǎn)編號。

  function istouch() {var max:Number = 0;

  var min:Number;

  var num:Number;

  for (var i = 1; i=9; i++) {//檢測第i個(gè)檢測點(diǎn)是否被觸碰min = ismove(myBitmap, this["point"+i]._x-xpoint, this["point"+i]._y-ypoint, 10, 10);

  //每次只能激發(fā)一個(gè)點(diǎn),選擇9個(gè)點(diǎn)中移動(dòng)最顯著(zhù)的一個(gè)if (max max = min;num = i;}}

    if (num) {//返回被觸碰的點(diǎn)的序號return (num);} else {//一個(gè)檢測點(diǎn)也沒(méi)碰到!;return 0;}}

8.游戲交互功能的實(shí)現

  游戲功能交互的實(shí)現tulaoshi.com方法和其他Flash游戲大體類(lèi)似。在此游戲中,主要包括3大功能模塊:子彈系統,氣球系統 和主控制系統。

1)子彈系統的實(shí)現

  該部分主要是實(shí)現子彈的運動(dòng)。游戲中有9個(gè)檢測點(diǎn),每個(gè)檢測點(diǎn)都可以發(fā)射子彈。各位置發(fā)射的子彈運動(dòng)方向是不同的。第i個(gè)檢測點(diǎn)的子彈方向為rot=i*20,初始位置在界面底部中央。

  this._x = this._x-30*Math.cos(rot*Math.PI/180);

  this._y = this._y-30*Math.sin(rot*Math.PI/180);

  當子彈出界時(shí),要使用this.unloadMovie()方法將該子彈實(shí)例銷(xiāo)毀,釋放內存。

2)氣球系統的實(shí)現

  該部分主要是實(shí)現氣球的碰撞檢測,判斷氣球是否被子彈擊中需使用hitTest()函數。該函數有兩種用法:

用法 1:

        根據 shapeFlag 設置,將 x 和 y 坐標與指定實(shí)例的形狀或邊框進(jìn)行比較。如果 shapeFlag 設置為 true,則只計算在舞臺上的實(shí)例實(shí)際占據的區域,并且如果 x 和 y 在任意一點(diǎn)重疊,則返回 true 值。

用法 2:

         計算 target 和指定實(shí)例的邊框,如果它們在任意一點(diǎn)上重疊或交叉,則返回 true。

3)主控制系統的實(shí)現

  主控制系統是實(shí)現互動(dòng)功能的核心部分。主要工作就是把游戲中所有的功能模塊集成起來(lái),對各功能模塊進(jìn)行調度和顯示。一方面,主控制系統要接收從攝像頭功能接口傳遞的信息;一方面根據接收的信息執行相應的功能代碼。

四、結束語(yǔ)

  Flash攝像頭游戲課件能夠實(shí)現很多傳統Flash課件難以實(shí)現的效果,特別是對操作技能的培養。我們開(kāi)發(fā)的《水果樂(lè )園》課件提供給一些小學(xué),進(jìn)行了英語(yǔ)學(xué)習實(shí)踐,效果還不錯。但是,對于Flash攝像頭游戲課件應用于學(xué)生高級思維策略的訓練,還沒(méi)有進(jìn)行深入的研究,特別是角色扮演型、問(wèn)題探究型等學(xué)習模式等實(shí)施,有待進(jìn)一步的的探索和實(shí)踐。


【Flash攝像頭游戲課件的設計之動(dòng)畫(huà)制作論文】相關(guān)文章:

小學(xué)flash動(dòng)畫(huà)課件制作方法03-26

flash動(dòng)畫(huà)教學(xué)課件03-23

flash教學(xué)課件制作03-29

制作flash教學(xué)課件03-28

小學(xué)flash課件制作03-24

初識flash動(dòng)畫(huà)教學(xué)課件03-30

小學(xué)動(dòng)畫(huà)《FLASH入門(mén)》課件03-22

如何制作flash游戲論文06-12

動(dòng)畫(huà)設計與制作Flash8說(shuō)課稿 制作引層動(dòng)畫(huà)11-08