日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cocosbuilder使用教程

發布時間:2023/12/14 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cocosbuilder使用教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://article.ityran.com/archives/2544

轉自:http://article.ityran.com/archives/2544

手把手教你使用CocosBuilder一次性導出Cocos2d-html5,Cocos2d-x和Cocos2d-iPhone的游戲資源文件。這個游戲90%的工作量是用工具完成。

CocosBuilder2.1 泰然下載地址 CocosDragon完整工程GitHub地址 在線Cocos2d-HTML5版本試玩地址 這篇教程將會展示如何使用?CocosBuilder和cocos2d-iphone制作游戲的動作,地圖場景和界面。CocosBuilder?已經被Zynga?使用在游戲Dream PetHouse?和?Zynga Slots開發中。目前,由于若干游戲使用CocosBuilder,Zynga?索性將其開源出來(MIT License)。未來必定有更多的游戲在開發中使用該工具。 這篇文章是建立在你很熟悉object-c以及cocos2d-iphone或者cocos2d-x的基礎上的。如果你希望學習cocos2d,泰然也有很多文章推薦給你。 在開始本文之前,確保你下載并安裝了CocosBuilder?的最新版(本教程基于2.1beta版本)并且升級cocos2d2.0或cocos2d-x的2.03版本以上。

The Game

我們將創造游戲主角Cocos?Dragon。Cocos?Dragon有一對很小的翅膀因此他飛不高,所以我們需要讓他觸碰金幣來給他加速上升直到碰到炸彈為止。你可以到youtube看這個游戲的視屏:youtube

本游戲可以在iOS模擬器上運行,游戲通過觸摸來操作方向。假如你希望把這個游戲設計運用到你的產品中,我推薦你用重力感應來替換觸摸方式。

設置工程

建立新的xcode工程。工程名稱:CocosDragon。

下載本教程需要用到的美術資源,解壓并加到工程中。 現在我們需要建立游戲相應的CocosBuilder?工程。打開CocosBuilder?選擇File?->New Project。命名為CocosDragon?保存并把資源文件放到xcode的Resources?文件夾(CocosBuilder的資源在一個名為ccbResources的文件夾)打開theHelloCocosBuilder.ccb文件.我們不會使用HelloCocosBuilder?文件,所以你可以在CocosBuilder文件系統中干掉他。

創建動畫類型的主界面

我們將開始制作Cocos Dragon所有的界面文件,然后將界面鏈接到相應的代碼中。首先,我們創建一個主菜單。 在CocosBuilder打開的CocosDragon?工程中選擇File->New File。我們將讓主界面只支持iPhone,所以在resolutions settings(方案設置)中勾選iPhone?Portrait?,并確保root object type(根對象類型)為CCLayer?并勾選full screen?(全屏)。

點擊創建,然后命名為“?MainMenuScene?”并且保存到Resources?文件夾。一個新的空文件MainMenuScene.ccb將在CocosBuilder中開啟。

主界面我們會包含一個漸變的背景,一個logo,一個開始游戲的按鈕,和幾片云彩的動畫。首先,讓我們開始加入漸變的背景。在窗口頂部的工具欄點擊CCLayerGradient?按鈕。

我們希望漸變層(gradient layer)充滿整個屏幕。選擇這個層,設置填充(content size)大小單位為“%”并且設置寬高為100×100.

讓我們把顏色修改為其他值以遍更適合我們游戲的主色調。點擊開始顏色(start color)和完成顏色(?end color)以至RGB值為下圖顯示這樣。

繼續添加logo到主界面(?menu scene)。在左邊的工程視圖(project view)中,拖拽logo.png到canvas?區域。你添加的圖片就會像如下那樣顯示:

當啟動主選單場景時會有漂亮的動畫,但是我們還需要在啟動時增加logo的動畫。首先,點擊canvas?區域下面的時間設置來指定動畫的長度。這里我們把動畫出現的時間線設置為2秒。

現在,我們把logo視為一個精靈,并設置logo精靈的關鍵幀(keyframes?)。拖拽時間戳到動畫完成的地方(我們這個工程就是之前設置的?00:02:00),并且確保logo已經被選定。在動畫菜單中選擇插入關鍵幀位置(Keyframe /Position),或者使用快捷鍵’P’.在時間線界面(timeline view),logo精靈會折疊并顯示剛才添加的關鍵幀。

一旦關鍵幀插入時間線的節點中,我們節點的位置既可以自動添加新的關鍵幀。首先,移動時間戳到原點(00:00:00的位置)。然后,拖拽logo到繪圖界面(?canvas area)的頂部可見區域(你可以在拖拽的時候按住shift按鈕以便對齊)。當你正在做以上操作時,一個新的關鍵幀就被自動添加到時間線的原點處,并且我們在兩個關鍵幀中間生成平滑過渡的所有幀。

你可以點擊Play來測試一下這個動畫。你也可以移動時間戳來看看每個幀的位置。

這個動畫我們完成的很漂亮并且每幀的過渡很平滑,但是讓我們再加點料。在關鍵幀之間右擊?插值線(譯者注:interpolation line,就是插入了過渡幀的地方)并且選擇彈出(Bounce Out)。

OK,我們讓logo被覆蓋了,但是我們依然需要一個啟動游戲的按鈕。我們將用CCMenu?和CCMenuItemImage來實現這個功能。那么,開始添加菜單功能,在工具欄中點擊CCMenu按鈕。如下圖:

一個CCMenu?將會添加到你的文件中。CCMenu?保持選中狀態,在工具欄點擊CCMenuItemImage?按鈕(在CCMenu按鈕右邊)。CCMenuItemImage?會在可是換編輯區域左下角顯示一個占位符圖像。

拖動這個圖片到屏幕中間,也可以使用Cmd+方向鍵或者 Cmd+shift+方向鍵來精準拖動,檢視器(?inspector)中輸入需要的值。選中CCMenuItemImage?,選擇你希望菜單顯示的其他圖片樣式。通常情況,未按下時我們使用圖片名稱“play-button.png”,按下時我們使用“?play-button-down.png”。

我們現在又一個帶logo和play?按鈕的選擇菜單場景,但是這還是感覺有點空蕩蕩的。所以我們加入一些云彩來充實一下。在工程界面,拖拽一些云 彩到可視化區域。你可以拖拽圖片的邊角來改變云彩的大小。要改變云彩的遮蓋(z-order)可以在時間線區域將相應的時間線拖到上面或者下面,當然也可 以在對象選項中(Object?menu)選擇Arrange / Bring放到上層,選擇Arrange / Send放到下層。

現在讓我們添加云彩的介紹動畫。這就像之前logo精靈那樣做就好。把時間戳移動到動畫的末尾。給每個云彩和play按鈕添加一個關鍵幀。你可以選 中每個云彩然后點擊快捷鍵‘p’。當關鍵幀已經被添加到所有對象的動畫末尾后,把時間戳移動到動畫開頭?,F在拖拽每個云彩,讓底部

點擊‘Play’來測試動畫。我們現在有一個很漂亮的主菜單介紹動畫。當動畫播放完畢后,整個場景就是完全禁止的。這不是很好,所以后面我們還會完善。

CocosBuilder提供了多個時間線。在文件中,多個時間線可以連續或者不連續播放,也可以通過代碼控制回放。兩個不同動畫的時間線可以實現平滑過渡。我們這個工程會實現多個時間線,當介紹動畫的時間線播放完成后,會循環播放另一個動畫。

在動畫菜單選擇編輯時間線(Edit Timelines)。在彈出框中,先將默認的時間線重命名為Intro。然后點擊plus-sign添加一條時間線并命名為Loop,點擊完成。

我們選擇要編輯的時間線,點擊drop-down按鈕(圖上已經標出),選中Timelines->Loop。

現在我們有一條未添加關鍵幀的時間線。這條時間線默認是10秒鐘,我們的工程剛好就要這么長。為了方便看出完成后的長度,你可以拖動比例條(scale slider)到左邊。

雖然只是一個很小的動畫,但可以給場景帶來生機。選擇一片云彩。將時間戳拖到起點,點擊快捷鍵’s'。這將會給比例屬性添加一個關鍵幀?,F在把時間 戳拖動到時間線末尾并再次點擊快捷鍵‘s’。這將會在動畫末尾添加一個關鍵幀。注意,這條線表示插入的view將會輕微淡出。這是因為兩個關鍵幀是完全一 樣的,所以沒有動畫產生?,F在這個情況就已經不錯了,因為我們希望動畫的首尾相同,以便重復播放。

按住option鍵點擊兩個關鍵幀中間,就在時間線的開頭和結尾之間添加一個新的關鍵幀。點擊這個新建的關鍵幀讓它出于選中狀態,通過調整比例值,或者拖動云彩,讓云彩稍微變大一點。

回放動畫,你可以看到一片云彩慢慢變大,然后再變回原始大小。讓我們給每片云彩做相同的操作。點擊所有的關鍵幀讓選擇框包含他們。你也可以用shift來選中。選中后,在Edit菜單選擇 復制。把時間戳移動到時間線原點,選擇另一片云彩點擊粘貼。并重復在所有云彩中操作(并沒有添加關鍵幀)。

再次回放動畫。你可以看到所有的云彩都按比例做放大縮小動作了,但是他們是在同時放大縮小,這很古怪,不是嗎?點擊每片云彩,延伸時間線,并移動中間那個關鍵幀的位置。這樣就會讓云彩在不同時間播放動畫了。多試幾次你就會有經驗調整到合適的長度了。

最后,我們要讓動畫在我們需要的時候自動循環,就要用到鏈式時間線功能(chain timeline?)。點擊時間線編輯器左下角的文本,這里顯示沒有鏈式時間線。彈出框中點擊 循環(loop)。這就會讓動畫自動循環了。

現在回到介紹動畫的時間線(點擊時間線drop-down菜單,選擇Timelines -> Intro)。在Intro右邊完成的地方鏈接?Loop時間線。當我們用代碼調用這個場景時,會自動播放Intro動畫,Intro完成后回循環播放Loop動畫。

主菜單的大部分已經完成,我們剩下的僅僅是在代碼中調用這個界面。要調用這個場景,我們要給根節點設置一個定制類。選擇根節點(在文件document的CCLayer中)。設置類名為“MainMenuScene”。我們會在稍后在代碼中創建MainMenuScene。

選擇Play按鈕。進入CCMenuItem下的pressedPlay:進入選擇器的輸入框,選擇目標“Document root”。當我們點擊按鈕pressedPlay:文件根節點方法(MainMenuScene)就會被調用。

游戲場景

我們使用游戲場景來載入在實際游戲中需要的所有東西。同時它也用來顯示分數。在file菜單中選擇New File?并選擇和你MainMenuScene中選擇的相同的選項(CCLayer, full screen, iPhone portrait),命名文件為GameScene并保存在文件夾。

對于這個游戲來說,我們會使用和菜單場景一樣的背景梯度?;蚴窃賱摻ㄒ槐?#xff0c;或是通過雙擊項目視圖的MainMenuScene,選擇CCLayerGradient,復制黏貼到你的新文件處。

點擊工具欄上的CCLayer圖標來給場景加一個層。稍后在代碼中我們會使用這個空的層來加載一個關卡。

層添加后,我們添加一個label用來顯示當前游戲的分數。點擊工具欄上的CCLabelTTF標簽。

如圖所示,把位置設成(160,40),字體設置成o?System Fonts / MarkerFelt-Wide,字號大小24,尺寸設成100*40,校準設成center,最后把文字設成“0”

這個游戲場景已經差不多完工了,唯一還差的就是和代碼的連接。選擇根節點并且設置自定義類為GameScene。然后選擇文本標簽,我們將要指派這個標簽作為根節點類的一個成員變量。將左側的下拉菜單中選擇為Doc root var,并且設置那個變量的名字為scoreLabel。

我們也需要連接剛才創建的那個空層到代碼。處理步驟同上并將變量明設為levelLayer。

現在我們已經完成這個游戲場景啦。讓我們繼續創建一些游戲對象。

增加游戲物體

我們這個游戲會用到4種游戲物體。游戲的主角:龍,以及錢幣,炸彈,和爆炸效果。所有游戲物體都是我們稍后創建的GameObject類的子類。GameObject類是CCNode的一個子類。因此,CocosBuilder創建的游戲中的所有對象都繼承自CCNode。(當然還有可能作為GameObject的插件程序存在,但是在本游戲中,我們并需要使用)。

讓我們開始創建游戲中最復雜的物體—龍。在File菜單中選取New File,創建一個新文件。選擇根節點對象為CCNode,反選全屏選項(full screen),選擇分辨率選項為iphone。

選擇根節點并設置自定義類為Dragon。

龍由幾個不同的移動部件組成:身體和2個翅膀。首先我們先加入翅膀這樣他們就會出現在身體的后面。在項目視圖拖動gameobjects.plist/dragon-wing.png?到畫布區域。設置翅膀的位置為(-8,4),另一個錨點設為(0.84,0.094).

然后,增加身體部分。拖動gameobjects.plist/dragon-body.png到畫布區域。設置身體的位置為(0,0)。你的文件看起來就會是這樣:

我們將龍的單個翅膀做動畫,然后復制翅膀并翻轉成一對做動畫的翅膀。首先,設置時間軸長度為1秒。然后,選擇翅膀,將時 間軸標記(timeline)移到開始處并按R鍵來增加一幀,以做翻轉。將時間軸(timeline)標記移動到結束處,再增加一幀翻轉。現在移動到中部 (00:00:15)。朝下旋轉翅膀—-你可以通過按住option鍵,并拖曳其中一個選擇選擇點來快捷旋轉它。旋轉這個翅膀差不多80度左右。

我們現在有了撲騰的翅膀啦,但是通過增加Bounce Out緩沖,我們可以讓它顯示的更加自然。在第一幀和中間幀之間右鍵,選擇Bounce Out.。在中間那幀和最后一幀也做同樣的設置。

現在來創建另外一只翅膀。首先確保沒有幀被選中,然后選擇翅膀。在edit菜單中選擇Copy,并Paste.第二個翅膀就被復制到龍的身體前面了,因此我們需要使用Object菜單中的Arrange /Send Backward選項。請 確保新的翅膀在檢查器中FilpX選項有被選中。這只會翻轉圖像,我們同意需要設置它的位置和錨點,設置位置為(8,4),錨點 (0.16,0.094)。這個翅膀的動畫現在看起來不錯了,但是選擇的方向是錯的。雙擊中間的那一幀來鎖定它。你可以改變檢查器(inspector) 中的旋轉角度(大概80度左右)。繼續播放動畫,這時候,龍的兩只翅膀應該都正常了。

在游戲中,我們的小龍會在碰到炸彈的時候停止撲騰它的翅膀。當撞到炸彈的時候,我們會播放另一個剪短的動畫,然后再撲騰翅膀。因此我們需要2個時間軸。選擇Animation?菜單的Choose?Edit Timelines…。重命名當前的時間軸為Flying,增加一個新的時間軸為Hit,然后點擊Done

我們希望飛行的時間軸循環播放,所有點擊No chained timeline并選擇Flying。然后切換到新創建的Hit時間軸。設置它的長度為2秒并和Flying連接起來。當龍被擊中時候,我們播放hit動畫,播放完成后它自動繼續Flying動畫。

剩下還有要做的就是創建一個龍被擊中的動畫。移動時間軸的標記到末尾,選擇每個翅膀并按R來增加旋轉動畫?,F在移動標記到開頭。將每個翅膀旋轉向下,我分別設置了-123和123的值。為每個翅膀增加一個Bounce Out屬性。

選擇龍的身體部分,移動時間軸標記到00:00:15.處。按F來增加一幀?,F在,移動標記到開頭處并按F增加一個精靈幀。在檢查器(inspector)中,設置精靈框為frame?togameobjects.plist/dragon-body-hit.png。點擊play按鈕來試試hit動畫怎么樣。

Bomb

炸彈

在街機游戲中怎么可能會少了壞人?我們需要一些很酷的炸彈~創建一個新文件就像dragon文件一樣(選項也一樣)。命名文件為Bomb并保存。選擇根節點并設置自定義類為Bomb。

我們現在要為我們的炸彈增加一些旋轉的釘子。設置時間軸長度為2s。拖曳gameobjects.plist-bomb-spikes.png到畫布處并設置位置為(0,0),同樣的拖曳thegameobjects.plist/bomb-body.png。炸彈身體會在尖刺的上方。

為了讓炸彈看起來更邪惡一點,我們需要讓釘子旋轉。選擇釘子精靈并移動時間軸標記至初始部分。按R來增加一幀旋轉的關鍵幀。通過移動時間軸標記到末尾增加一個關鍵幀(按R鍵)并設置精靈的旋轉角度是360度。播放動畫,我們可以看到釘子繞著身體旋轉了。

最后,請確保時間軸自動的循環播放,你可以動過點擊No chained timeline?text?并選擇Default的時間軸。


Coin

硬幣

在我們的游戲中我們會看到2種硬幣,普通硬幣和結束硬幣。吃了普通硬盤會給與我們的龍一個短暫的加速,吃了結束硬幣會結束當前關卡。我們可以使用相同的類對于這2種硬幣,但是在其中加一個額外的屬性以方便我們在代碼中區分他們。

用和dragon,bomb文件一樣的設置創建一個新文件。命名為Coin,設置自定義類為Coin。

拖曳gameobjects.plist/coin01.png到畫布區并設置位置為(0,0)?,F在我們想要增加一幀基于硬幣的動畫,設置時間軸的長度為00:01:06.確保時間軸標記在最前面而且硬幣精靈被選中?,F在選擇項目視圖中的coin01.png到coin18.png。

選擇Animation?菜單中的Create Frames from Selected Resources按鈕。你將為硬幣精靈添加一系列的關鍵幀。動畫起了作用,但是好像稍微太快了點。拖動選擇框包圍他們來選擇所有的關鍵幀,然后,選擇Animation?菜單中的Stretch Selected Keyframes?按鈕。設置拉伸率(stretch)為2.0并點擊Done。這時關鍵幀時間被隔開,動畫看起來就更慢了。

對于炸彈,通過設置默認的時間軸,完成這個文件,并保存。

現在我們開始創建“結束硬幣”。打開Finder,復制Coin.ccb文件,并重命名為EndCoin.ccb。切回到CocosBuilder,雙擊項目視圖來新建一個文件。為了區別這2種硬幣,我們需要在根節點增加一個自定義的屬性。選擇根節點并點擊檢查器中的Edit Custom Properties。創建一個新的屬性,命名為isEndCoin,設置種類為Bool并設置值為1.點擊Done、

當文件在我們的app中載入的時候,這個自定義屬性就會被設置進自定義的類里。為了使這個旋轉的硬幣視覺上有別于普通的硬幣。選擇硬幣,并點擊color well來彈出顏色選取器,設置如下所示的顏色,這樣,我們就完成了2個不同的硬幣。

Explosion

爆炸

當炸彈爆炸的時候,我們需要一些花哨的爆炸效果。我們可以使用粒子系統。每一個爆炸由2個粒子系統構成。

首先創建一個新文件,設置都同前面創建龍、炸彈和硬幣的一樣并命名文件為Explosion。設置時間軸長度為2秒,并定義根節點的自定義類名為Explosion。點擊工具欄的粒子系統的圖標2次,來增加2個粒子系統的文件。

兩個粒子系統的參數設置如下圖所示。如果想看一下效果,你可以點擊檢查器中的Start Particles按鈕。

Creating a Level

創建一個關卡


我們完成了我們所有的游戲物體。唯一還沒做的界面就是關卡地圖了。創建一個新文件,請確保根節點中CCLayer和full screen的選項被選擇,選擇iPhone Portrait的分辨率,但是設置高度為4096.

將其保存為Level文件。設置根節點的自定義類名為Level。我們現在有一個很大的文件來放置我們這些游戲物體。首先先增加龍吧。將項目視圖中的Dragon.ccb拖曳到畫布區域。選擇龍并設置位置為(160,40),如果你移動了龍,你可能需要滾動畫布區域才能看到龍。我們需要向下滾動可視化編輯器,以便你在移動進入前能看到我們添加的龍。我們希望能夠簡便地在代碼中加入龍,所以在下拉菜單總的代碼連接選項(Code Connections)中選擇Doc root var。

現在,從項目視圖中拖曳并放置更多游戲物體。在我這種情況下,第一關看起來像這樣:

在關卡的頂部放置一個“結束硬幣”。當龍接觸到“接觸硬幣”的時候,關卡結束。當你很高興的布局你的關卡的時候,請確保所有打開的文件要保存?,F在,選擇File菜單中的Publish按鈕。這將會把你的文件打包成一個非常緊湊的二進制格式文件。

游戲編碼


現在我們已經為游戲創建好了所有接口文件,下一步開始編碼。

用Xcode打開項目,右鍵單擊Resources文件夾并選擇Add Files to “CocosDragon”…….確保“Create groups for any added folders”單選框被選中,并且“CocosDragon?target”也被選中。將所有的圖片文件添加到資源目錄下,包括plist文件 (sprite sheets)和所有ccbi文件。你不必添加以ccb為擴展名的文件進來,因為他們只在CocosBuilder下使用。

下一步,我們要添加CCBReader到項目下。CCBReader在示例代碼的文件夾下。將他添加到“你項目 /cocos2d-iphone”。將CCBReader文件夾添加到你項目之后,確認Create groups for any added folders被選中,并且Copy items into destination group’s folder被選中。

Xcode下,打開Prefix.pch文件,它在Supporting Files組下。引入頭文件的代碼如下:

#ifdef __OBJC__ #import #import #import “cocos2d.h” #endif

MainMenuScene

我們現在開始編碼。讓我們一起創建一個主菜單(main menu)!選擇File菜單下的New/File。選擇Objective-C class,命名該類為MainMenuScene并設定該類為CCLayer的子類。

在MainMenuScene.m的最上部import?CCBReader.h。我們也將實現play按鈕的回調函數,這個play按鈕是我們在ccb文件中加入的。在實現文件中(*.m)中加入如下代碼:

- (void) pressedPlay:(id)sender

{

?// Load the game scene

?CCScene* gameScene = [CCBReader sceneWithNodeGraphFromFile:@"GameScene.ccbi"];

?// Go to the game scene

?[[CCDirector sharedDirector] replaceScene:gameScene];

}

當我們按下play按鈕,我們將第一次通過ccbi文件加載游戲場景。然后通知CCDirector去用游戲場景 replace掉當前的場景。這部分的代碼我們需要寫到MainMenuScene里,而且需要在游戲開始時候加載。打開AppDelegate.m文 件,引入CCBReader.h,然后用下面的代碼替換既存的引入初始場景的代碼:

// Load the main menu scene from the ccbi-file

CCScene* mainScene = [CCBReader sceneWithNodeGraphFromFile:@"MainMenuScene.ccbi"];

// Then add the scene to the stack. The director will run it when it automatically when the view is displayed.

[director_ pushScene: mainScene];

然后,還是在AppDelegate.m文件,用如下代碼替換shouldAutorotateToInterfaceOrientation:方法:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

?return UIInterfaceOrientationIsPortrait(interfaceOrientation);

}

這將確保我們的游戲以豎屏模式運行。你可以在github上找到源文件:

MainMenuScene.m

MainMenuScene.h

AppDelegate.m

GameScene

當我們按下play按鈕之后,GameScene.ccbi文件將會被加載,并創建GameScene的實例?,F在我們需要創建GameScene類。創建一個新類命名為GameScene,讓其繼承自CCLayer。

在CocosBuilder里,我們添加了兩個成員變量(levelLayer和scoreLabel)。我們需要添加它們到文件中去。并且也需要加載等級(Level)以及動態的記錄當前的分數。在GameScene.h添加前面提到的兩個成員變量:

@interface GameScene : CCLayer

{

?CCLayer* levelLayer;

?CCLabelTTF* scoreLabel;

?CCNode* level;

?int score;

}

為了從別的類里更好的管理分數,我們將在GameScene類里增加一個屬性。我們也將增加方法去管理游戲結束以及升級的情況。

@property (nonatomic,assign) int score;

+ (GameScene*) sharedScene;

- (void) handleGameOver;

- (void) handleLevelComplete;

@end

下面我們來實現GameScene類的方法。打開GameScene.m。在頭部importCCBReader.h。在開始實現該類之前,先定義一個靜態變量以方便共享該類的實例。

static?GameScene* sharedScene;

在該類的類方法中返回這個共享實例。

+ (GameScene*) sharedScene

{

?return sharedScene;

}

我也需要去synthesize這個分數屬性。

@synthesize score;

當一個ccbi文件被加載的時候,CCBReader將會調用創建每個節點的方法didLoadFromCCB。通過實現該方法,你將在文件加載完畢的時候收到一個回調函數。我們將會利用回調信息去設置當前場景以及加載等級。

- (void) didLoadFromCCB

{

?// Save a reference to the currently used instance of GameScene

?sharedScene = self;

?self.score = 0;

?// Load the level

?level = [CCBReader nodeGraphFromFile:@"Level.ccbi"];

?// And add it to the game scene

?[levelLayer addChild:level];

}

這部分代碼加載Level.ccbi文件并且將其作為一個子節點加到我們在CocosBuilder里創建的levelLayer上。在真實的游戲當中我們可能會有不止一個的等級文件,并且對應玩家在游戲中的進度選擇不同的文件。

當分數屬性改變時,我們希望更新label上分數的顯示。我們通過setScore:方法來實現。記住我們已經在CocosBuilder定義了scoreLabel。

- (void) setScore:(int)s

{

?score = s;

?[scoreLabel setString:[NSString stringWithFormat:@"%d",s]];

}

離開GameScene之前的最后一步是為控制游戲結束以及升級編碼。在實際游戲中你可能做更多的事情在這些方法中,但是在該例子中,我們只是簡單的返回主菜單場景。

- (void) handleGameOver

{

?[[CCDirector sharedDirector] replaceScene:[CCBReader sceneWithNodeGraphFromFile:@"MainMenuScene.ccbi"]];

}

- (void) handleLevelComplete

{

?[[CCDirector sharedDirector] replaceScene:[CCBReader sceneWithNodeGraphFromFile:@"MainMenuScene.ccbi"]];

}

你可以在github找到源碼

?GameScene.m

?GameScene.h

GameObject

GameObject是一個抽象類,它是所有游戲對象的父類。他讓我們可以等同對待所有的游戲對象。創建一個CCNode的子類,命名為GameObject。這個類包含一些基礎屬性的設置以及一些基礎的方法,以便我們在游戲當中控制游戲對象。如果我們想移除一個對象那么可以設置isScheduledForRemove屬性。這個更新方法會在每個框架更新游戲對象狀態的時候調用一次。我們將在檢測沖突的時候(在我們的游戲當中每一個游戲對象都視為圓形)使用radius屬性。最后,如果兩個游戲對象發生碰撞,兩個發生碰撞的游戲對象的handleCollisionWith:方法將被調用。下面就是頭文件的定義代碼:

@interface GameObject : CCNode

{

?BOOL isScheduledForRemove;

}

@property (nonatomic,assign) BOOL isScheduledForRemove;

@property (nonatomic,readonly) float radius;

- (void) update;

- (void) handleCollisionWith:(GameObject*)gameObject;

@end

這個.m文件只是實現了一個空方法,因為他是一個抽象類。

@implementation GameObject

@synthesize isScheduledForRemove;

// Update is called for every game object once every frame

- (void) update

{}

// If this game object has collided with another game object this method is called

- (void) handleCollisionWith:(GameObject *)gameObject

{}

// Returns the radius of this game object

- (float) radius

{?????return 0;

}

@end

源碼參見以下文件鏈接:

GameObject.m

GameObject.h

Dragon

龍是我們游戲中最復雜的游戲對象。它控制著玩家將要控制的這個角色的行為,同時這也是游戲的主要行為。創建一個GameObject的子類命名為Dragon。

為了控制龍的運動,我們需要兩個變量,縱向速度ySpeed,以及橫向目標xTarget。xTarget將會在點擊iPhone上的打擊目標的時候被設置。之后變量將會被外部類設定,我們將會將他作為一個屬性。下面是我們需要添加的頭文件:

@interface Dragon : GameObject

{

?float ySpeed;

?float xTarget;

}

@property (nonatomic,assign) float xTarget;

@end

.m文件將會更加有趣。首先,我們會整合一些其他的類進來,我們來引入他們。(我們將會在完成Dragon類之后,編寫Coin和Bomb類)

#import “Dragon.h”

#import “Coin.h”

#import “Bomb.h”

#import “GameScene.h”

#import “CCBAnimationManager.h”

下面,我們來定義幾個常量來方便對龍的行為的控制。使用常量是一個非常不錯的選擇,因為這樣很方便我們去從感官上控制游戲。

#define kCJStartSpeed 8

#define kCJCoinSpeed 8

#define kCJStartTarget 160

#define kCJTargetFilterFactor 0.05

#define kCJSlowDownFactor 0.995

#define kCJGravitySpeed 0.1

#define kCJGameOverSpeed -10

#define kCJDeltaToRotationFactor?5

實現Dragon類的第一步,我們需要synthesize屬性xTarget。

@synthesize xTarget;

然后來到init方法,在這里我們將初始化我們的成員變量。xTarget的初始值為160,位于屏幕中心。

- (id) init

{

?self = [super init];

?if (!self) return NULL;

?xTarget = kCJStartTarget;

?ySpeed = kCJStartSpeed;

?return self;

}

我們將使用update方法讓龍在屏幕上平滑的移動。在每個frame下,update方法會被調用一次。我們將利用一 個計算原始點和目標點之間距離的過濾器方法來獲得一個新的X坐標。我所說的目標點就是玩家在屏幕上觸摸的點。Y坐標則是在原始坐標的基礎上增加現有速度來 計算得出的。之后我們更新速度,我們不但可以通過增加常量的方式加快速度,也可以利用參數減慢速度(這將防止龍的攻擊速度過快)。我們同時依靠水平速度翹 起龍的一側。如果縱向速度向下過快,那么游戲結束。

- (void) update

{

?// Calculate new position

?CGPoint oldPosition = self.position;

?float xNew = xTarget * kCJTargetFilterFactor + oldPosition.x * (1-kCJTargetFilterFactor);

?float yNew = oldPosition.y + ySpeed;??????self.position = ccp(xNew,yNew);

?// Update the vertical speed

?ySpeed = (ySpeed – kCJGravitySpeed) * kCJSlowDownFactor;

?// Tilt the dragon depending on horizontal speed

?float xDelta = xNew – oldPosition.x;

?self.rotation = xDelta * kCJDeltaToRotationFactor;

?// Check for game over

?if (ySpeed < kCJGameOverSpeed)

?{

?[[GameScene sharedScene] handleGameOver];

?}

}

在Dragon類里我們也需要去控制碰撞。我們將通過判斷是碰撞了哪種對象來相應的做出動作。如果碰到了錢幣,我們增加 分數并且給龍一個向上增長的速度。如果我們碰到了炸彈,龍會降低速度并且播放在CocosBuilder里面制作的Hit動畫。我們在 userObject里用CCBReader保存的CCBAnimationManager,之后調用 runAnimationsForSequenceNamed:方法。

- (void) handleCollisionWith:(GameObject *)gameObject

{

?if ([gameObject isKindOfClass:[Coin class]])

?{

?// Took a coin

?ySpeed = kCJCoinSpeed;

?[GameScene sharedScene].score += 1;

?}

?else if ([gameObject isKindOfClass:[Bomb class]])

?{

?// Hit a bomb

?if (ySpeed > 0) ySpeed = 0;

?CCBAnimationManager* animationManager = self.userObject;

?NSLog(@”animationManager: %@”, animationManager);

?[animationManager runAnimationsForSequenceNamed:@"Hit"];

?}

}

最后我們要實現radius(半徑)屬性。它將用于控制碰撞。

- (float) radius

{

?return 25;

}

完整的Dragon類,請參見:

Dragon.m

Dragon.h

Coin

金幣有一個相當簡單的邏輯,金幣在碰到龍的時候會被移除。如果最后一枚金幣碰撞到了龍,該等級的任務完成。創建一個名為 Coin的類,他是GameObject的子類。在CocosBuilder我們增加了一些自定義的屬性,isEndCoin是專門針對最后一枚金幣的, 普通金幣也使用相同的自定義類。我們需要實現這個屬性在我們的類里,下文是頭部文件:

@interface Coin : GameObject

{

?BOOL isEndCoin;

}

@property (nonatomic,assign) BOOL isEndCoin;

@end

.m文件,我們首先要synthesize屬性isEndCoin。

@synthesize isEndCoin;

我們不必移動金幣,所以我們不用實現update方法。但是,當背龍碰撞的時候我們想移除它。并且,如果是最后一枚金幣的話,我們想升級。

- (void) handleCollisionWith:(GameObject *)gameObject

{

?if ([gameObject isKindOfClass:[Dragon class]])

?{

?if (isEndCoin)

?{

?// Level is complete!

?[[GameScene sharedScene] handleLevelComplete];

?}

?self.isScheduledForRemove = YES;

?}

}

最后,讓我們來設定金幣的半徑。

- (float) radius

{

?return 15;

}

完整的代碼,參見下方:

Coin.m

Coin.h

Bomb

炸彈是我們游戲當中的一個障礙物。創建名為Bomb的類,他是GameObject的子類。當炸彈碰撞到玩家的時候,它 會爆炸。這個效果是通過移除炸彈并且動態的加載爆炸效果來實現的。我們沒有添加任何新的屬性進來,所以頭文件不需要修改。在.m文件中,我們需要實現 handleCollisionsWith:方法。

- (void) handleCollisionWith:(GameObject *)gameObject

{

?if ([gameObject isKindOfClass:[Dragon class]])

?{

?// Collided with the dragon, remove object and add an explosion instead

?self.isScheduledForRemove = YES;

?CCNode* explosion = [CCBReader nodeGraphFromFile:@"Explosion.ccbi"];

?explosion.position = self.position;

?[self.parent addChild:explosion];

?}

}

之后,我們需要設定炸彈的半徑。

- (float) radius

{

?return 15;

}

完整的代碼,如下:

Bomb.m

Bomb.h

Explosion

最后一個游戲對象,我們將會實現爆炸(Explosion)。爆炸不會影響其他的任何游戲對象。但是我們會在它完成播放 之后移除調它。為此我們必須實現CCBAnimationManagerDelegate。在頭文件,首先引入 CCBAnimationManagerDelegate.h,然后將其作為一個協議加進到Explosion。

#import “CCBAnimationManager.h”

@interface Explosion : GameObject

@end

.m文件,我們將分配Explosion類作為CCBActionManager的代理,這步的創建將發生在爆炸加載的時候。我們將在didLoadFromCCB:方法來實現這步。

- (void) didLoadFromCCB

{

?// Setup a delegate method for the animationManager of the explosion

?CCBAnimationManager* animationManager = self.userObject;

?animationManager.delegate = self;

}

至此,當動畫播放完畢我們將收到回調函數completedAnimationSequenceNamed:,實現該回調并增加一個移除爆炸的定時器。

- (void) completedAnimationSequenceNamed:(NSString *)name

{

?// Remove the explosion object after the animation has finished

?self.isScheduledForRemove = YES;

}

完整的代碼見下方:

Explosion.m

Explosion.h

Level

我們就還剩一個Level類沒有完成。Level將會控制所有的玩家輸入,并且負責更新和移除我們的游戲對象。創建名為Level的類,它是CCLayer的子類。在CocosBuilder里,我們添加了一個成員變量dragon,所以我們要把它加到頭文件。

@class Dragon;??@interface Level : CCLayer

{

?Dragon* dragon;

}

@end

.m文件,我們將引入計劃訪問的類。

#import “Dragon.h”

#import “GameObject.h”

我們也將定義兩個常量用于層的滾動。因為龍需要是一直可見的。

#define kCJScrollFilterFactor 0.1

#define kCJDragonTargetOffset 80

我們使用onEnter方法,在每個frame之前,去提供一個回調函數update:。在onExit我們移除這個回調。

- (void) onEnter

{

?[super onEnter];

?// Schedule a selector that is called every frame

?[self schedule:@selector(update:)];

?// Make sure touches are enabled

?self.isTouchEnabled = YES;

}

- (void) onExit

{

?[super onExit];

?// Remove the scheduled selector

?[self unscheduleAllSelectors];

}

在update:方法我們將更新所有游戲對象。記住,在CocosBuilder里我們增加的游戲對象都是level的 子對象。之后,游戲對象更新以及發生位置改變的時候我們將檢測是否有碰撞。在這個游戲里我們只檢測與龍之間的碰撞,因為只有他是移動的。在其他的游戲里, 你可能需要寫更多更復雜的代碼去檢測碰撞,或者有可能用到諸如Chipmunk,Box2d的物理引擎。因為所有的碰撞都是可控的,我們將會遍歷游戲的所 有對象去看哪些對象被定時移除了。我們為這些對象創建一個數組,使用這個隊列來移除他們。最后,我們調整層的位置,所以龍總是可見的。當調整位置的時候我 們使用過濾器代理去確保移動的平滑。

- (void) update:(ccTime)delta

{

?// Iterate through all objects in the level layer

?CCNode* child;

?CCARRAY_FOREACH(self.children, child)

?{

?// Check if the child is a game object

?if ([child isKindOfClass:[GameObject class]])

?{

?GameObject* gameObject = (GameObject*)child;

?// Update all game objects

?[gameObject update];

?// Check for collisions with dragon

?if (gameObject != dragon)

?{

?if (ccpDistance(gameObject.position, dragon.position) < gameObject.radius + dragon.radius)

?{

?// Notify the game objects that they have collided

?[gameObject handleCollisionWith:dragon];

?[dragon handleCollisionWith:gameObject];

?}

?}

?}

?}

?// Check for objects to remove

?NSMutableArray* gameObjectsToRemove = [NSMutableArray array];

?CCARRAY_FOREACH(self.children, child)

?{

?if ([child isKindOfClass:[GameObject class]])

?{

?GameObject* gameObject = (GameObject*)child;

?if (gameObject.isScheduledForRemove)

?{

?[gameObjectsToRemove addObject:gameObject];

?}

?}

?}

?for (GameObject* gameObject in gameObjectsToRemove)

?{

?[self removeChild:gameObject cleanup:YES];

?}

?// Adjust the position of the layer so dragon is visible

?float yTarget = kCJDragonTargetOffset – dragon.position.y;

?CGPoint oldLayerPosition = self.position;

?float xNew = oldLayerPosition.x;

?float yNew = yTarget * kCJScrollFilterFactor + oldLayerPosition.y * (1.0f – kCJScrollFilterFactor);

?self.position = ccp(xNew, yNew);

}

最后我們需要去做些事情來響應玩家的觸摸。我們實現了ccTouchesBegan:withEvent:和ccTouchesMoved:withEvent:方法去獲取觸摸位置,以及設定龍的xTarget屬性。

- (void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

?UITouch* touch = [touches anyObject];

?CGPoint touchLocation = [touch locationInView: [touch view]];

?dragon.xTarget = touchLocation.x;

}

- (void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

{

?UITouch* touch = [touches anyObject];

?CGPoint touchLocation = [touch locationInView: [touch view]];

?dragon.xTarget = touchLocation.x;

}

完整的代碼請參見:

Level.m

Level.h

總結

用所有的CocosBuilder文件為游戲創建的類,你應該可以在虛擬機或者真機上編譯運行。很感謝花時間讀這個教程,祝你編碼愉快!


總結

以上是生活随笔為你收集整理的Cocosbuilder使用教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久久久免费高清视频 | 欧美日韩午夜爽爽 | 免费网址你懂的 | 亚洲经典视频 | 国产福利资源 | 色综合色综合色综合 | 手机在线视频福利 | 日本在线中文在线 | 少妇搡bbb | 欧美日韩国产一区二区三区在线观看 | 激情xxxx | 成人三级网站在线观看 | 天天操夜操 | 欧美日韩国产在线精品 | 成人h电影在线观看 | 一本色道久久综合亚洲二区三区 | 色天天综合久久久久综合片 | 美女免费视频观看网站 | 毛片网站在线看 | 九九精品视频在线看 | 欧美日韩首页 | 亚洲精品九九 | 国产小视频在线 | 日韩综合精品 | 99精品欧美一区二区三区黑人哦 | 三级黄色在线观看 | 香蕉视频国产在线观看 | 亚洲闷骚少妇在线观看网站 | 色狠狠综合天天综合综合 | 欧美一区二区精美视频 | 国产福利午夜 | 久久国产精品免费一区二区三区 | 婷婷激情综合五月天 | 成 人 黄 色 免费播放 | 亚洲精品欧洲精品 | 天天激情 | 91九色蝌蚪视频网站 | 亚洲国产三级在线 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 成人黄在线 | 久久精品视频在线观看免费 | 国产专区第一页 | 成人国产精品久久久 | 亚洲视频aaa | 亚洲成人一区 | 成人wwwxxx视频| 日本在线观看一区二区 | 日本丰满少妇免费一区 | 天天综合视频在线观看 | 91精品视频免费在线观看 | 欧美精品免费视频 | 丁香九月激情 | 81国产精品久久久久久久久久 | 日韩sese| 最新免费av在线 | 特级西西444www高清大视频 | 亚洲国产成人久久综合 | 综合色天天| 91热爆在线观看 | 高潮久久久久久久久 | 涩五月婷婷 | 日本最大色倩网站www | 欧美一区二区三区在线视频观看 | 亚洲综合国产精品 | 国产一级精品绿帽视频 | www久久| 免费福利影院 | 日韩在线观看第一页 | 久久久久激情电影 | 日韩在线视频精品 | 亚洲另类在线视频 | 91视频链接 | 国产精品免费久久久久久久久久中文 | 亚洲精品日韩av | 一区二区三区 中文字幕 | a午夜在线 | 国产一区视频免费在线观看 | 婷婷五综合 | 国产成人精品福利 | 欧美色图亚洲图片 | 久久精品视频免费 | 亚洲欧美视频一区二区三区 | 精品国产欧美 | 深夜激情影院 | 国产精品视频不卡 | 在线韩国电影免费观影完整版 | 欧美视频在线观看免费网址 | 免费观看视频的网站 | 97免费在线观看 | 五月天网站在线 | 特黄特色特刺激视频免费播放 | 欧美伦理一区二区三区 | 中文字幕在线精品 | 99精品国产在热久久下载 | 国产精品美女久久久网av | 国产一区二区手机在线观看 | 亚洲精品国产精品国自产在线 | 91女子私密保健养生少妇 | 国产精品18久久久久vr手机版特色 | 国产手机av| 97精品国产一二三产区 | 在线免费观看不卡av | 久久久久久亚洲精品 | 91在线你懂的| 色亚洲网 | 天堂av在线中文在线 | 国产视频在线免费 | 久久久久久久久影院 | 国产一区久久 | 欧美性做爰猛烈叫床潮 | 国产精品久一 | 国产999精品久久久久久绿帽 | 日日夜夜免费精品 | 欧美一级大片在线观看 | 最新久久免费视频 | 亚洲国产视频a | 免费高清在线观看成人 | 天堂在线免费视频 | 91久久久久久久一区二区 | 亚洲乱码在线 | 黄色一级在线视频 | 一区二区三区精品在线 | 国产中文欧美日韩在线 | 日韩av高清在线观看 | 日韩精品中文字幕一区二区 | 天天操天天摸天天干 | 狠狠色丁香婷婷综合久久片 | av免费线看 | 国产精品一区二区久久精品爱涩 | 91视频免费看片 | 久久久综合色 | 99视频在线免费看 | 欧美成人亚洲 | 黄色毛片视频免费观看中文 | 欧美极品少妇xbxb性爽爽视频 | 中文字幕一区二区三区乱码不卡 | 日本中文字幕免费观看 | 日韩va欧美va亚洲va久久 | 久久精品香蕉 | av在线一二三区 | 成人免费在线电影 | 五月婷婷激情 | 久久国产片 | 亚洲精品视频网 | 国产精品久久99精品毛片三a | 免费看av片网站 | 国内精品久久久精品电影院 | 五月婷婷伊人网 | 中国一区二区视频 | 国产91学生粉嫩喷水 | 成人av观看| 日韩欧美视频免费看 | 国产精品欧美一区二区 | 97电影院在线观看 | 亚洲成人av在线 | 亚洲aⅴ在线观看 | 狠狠插天天干 | 日本在线视频网址 | 成年人免费电影在线观看 | 天天干天天射天天操 | 精品视频免费看 | 国产精品自产拍在线观看网站 | 一区二精品| 中文字幕在线观看第二页 | 91日韩免费 | 亚洲精品麻豆视频 | 日韩在线观看你懂的 | 日日噜噜噜噜夜夜爽亚洲精品 | 正在播放亚洲精品 | 97视频在线免费观看 | 国产精品毛片一区视频播 | 91精品国产高清自在线观看 | 亚洲日本一区二区在线 | 狠狠干干| 国产在线观看xxx | 国产一级特黄毛片在线毛片 | 成 人 黄 色 视频免费播放 | 9999精品免费视频 | 2023年中文无字幕文字 | 色资源在线观看 | 成人一区在线观看 | 日日夜夜操av | 久久在线| 婷婷五情天综123 | 日韩在线三级 | 天天爽天天摸 | 在线看片中文字幕 | 日韩精品视频久久 | 日韩免费播放 | 久草观看 | 中文字幕日韩有码 | 色婷婷激情电影 | 91免费观看网站 | 亚洲精品中文字幕在线 | 国产精品一区专区欧美日韩 | 9草在线| 亚州精品一二三区 | 亚洲国产精彩中文乱码av | 成人黄色小说在线观看 | 免费av试看| 91成人免费看 | 国产人成一区二区三区影院 | 91视频88av | 91精品国产自产在线观看 | 久久久久久毛片精品免费不卡 | 国产一区欧美日韩 | 深爱五月激情网 | 天堂在线视频中文网 | 天天操天| 午夜精品一区二区三区在线观看 | 91色在线观看视频 | 国产婷婷色 | 激情网站免费观看 | 99精品视频一区二区 | 亚洲国产成人精品电影在线观看 | 久久视频在线视频 | 日本成人黄色片 | 欧美视频在线二区 | 亚洲黄色在线播放 | 欧美激情精品久久久久久免费印度 | 免费日韩一级片 | 黄色av电影一级片 | 国产一区二区日本 | 337p日本欧洲亚洲大胆裸体艺术 | 一区二区三区免费在线观看 | 久久久网址| www,黄视频 | 久久久男人的天堂 | 国产欧美精品一区二区三区 | 日韩精品最新在线观看 | 亚洲欧美少妇 | 亚洲资源在线观看 | 区一区二区三区中文字幕 | 国产又粗又猛又爽又黄的视频先 | 亚洲精品国产精品99久久 | 日韩视频a | 中文字幕乱码视频 | 一区免费视频 | 日韩免费久久 | 久久成人一区二区 | 97精品超碰一区二区三区 | 在线观看黄色国产 | 精品国产一区二区三区久久久 | 99免费精品| 成人a v视频| 亚洲黄色av一区 | 久久激情小视频 | 日韩av综合网站 | 欧美日韩一区二区在线观看 | 久久精品国产精品亚洲 | 国产护士hd高朝护士1 | 日本成人黄色片 | 在线免费av电影 | 深夜免费福利网站 | 人人爽人人澡人人添人人人人 | 国产成人一区二区三区在线观看 | 日韩视频一区二区在线 | 久久久午夜剧场 | 欧美精品在线观看免费 | 国产小视频免费在线观看 | 一区二区三区影院 | 国产精品ssss在线亚洲 | 久久国产精品99久久久久久老狼 | www.亚洲精品 | 亚洲综合少妇 | 91.麻豆视频| 99一级片| 视频直播国产精品 | 久久视频这里有精品 | 欧亚日韩精品一区二区在线 | 亚洲一级片 | 91资源在线 | 免费观看成年人视频 | 国产精品成人免费精品自在线观看 | 亚洲国产精久久久久久久 | 97色噜噜 | 四虎影院在线观看av | 91在线蜜桃臀 | 日韩久久久久久久久久 | 亚洲欧洲日韩在线观看 | 日本黄区免费视频观看 | 免费高清在线观看成人 | 免费黄色看片 | 色视频在线 | 久久综合久久八八 | 午夜视频在线观看一区二区三区 | 色综合久久中文综合久久牛 | 在线v| 在线播放av网址 | 国产亚洲情侣一区二区无 | 久久综合久久88 | 婷婷色av| 国产一区二区三区在线免费观看 | 久久这里只有精品久久 | 亚洲精品欧美专区 | av综合av| 色综合欧洲 | 婷婷在线不卡 | 98超碰人人| 国产裸体视频网站 | 久久久亚洲国产精品麻豆综合天堂 | 亚洲午夜精品在线观看 | 操操日| 在线国产不卡 | 九色自拍视频 | 久久精品一二三 | 亚洲专区在线视频 | 久久精品美女 | 欧美黄在线 | 久久精品官网 | 婷婷黄色片 | 黄色三级视频片 | 天天插天天操天天干 | 免费在线成人av电影 | a黄色大片 | 在线观看电影av | 在线а√天堂中文官网 | 成年人在线观看网站 | 久久免费看毛片 | 亚洲精品美女在线观看 | 国产黄色av网站 | 国产超碰在线 | 成人一级在线观看 | 久草在线99 | 国产精品久久久久久久久久ktv | 亚洲精品视频二区 | 狠狠躁18三区二区一区ai明星 | 色综合人人 | 日韩网站在线看片你懂的 | ,久久福利影视 | 中文字幕资源在线 | 国产欧美久久久精品影院 | 激情在线网站 | 欧美日性视频 | 国产精品一区二区久久精品爱涩 | 欧美成人69av | 午夜精品久久久 | 麻豆成人网| 国产精品视频地址 | 国产精品欧美久久久久久 | 99视频国产在线 | 久久精品网站免费观看 | 一级黄色片在线播放 | 久久久久久久免费 | 日日日视频 | 日韩羞羞| 超碰av在线 | 香蕉视频一级 | 国产伦精品一区二区三区无广告 | 日日干日日 | 国产精品毛片一区二区在线看 | www久久com| 人人射人人射 | 国产精品一区二区三区免费视频 | 精品久久一区 | 激情欧美一区二区免费视频 | 天天爱天天射天天干天天 | 亚洲无人区小视频 | 超碰97在线人人 | 天天综合久久综合 | 成人免费观看电影 | 91视频下载 | 色网免费观看 | 日日久视频 | 免费高清无人区完整版 | 韩国av电影在线观看 | 精品久久一 | 99视频精品 | 成人久久国产 | 在线最新av | 色在线网| 8x成人免费视频 | 午夜视频二区 | 韩国一区二区三区视频 | av直接看 | av福利在线导航 | 国产乱码精品一区二区蜜臀 | 五月香视频在线观看 | 成人黄色小说在线观看 | av中文字幕在线观看网站 | 日韩成人xxxx| 国产精品免费一区二区三区 | 在线免费中文字幕 | 在线中文字幕播放 | 亚洲成av人片一区二区梦乃 | 国产精品日韩精品 | 91精品国产成人 | 免费的成人av | 又黄又色又爽 | 国产尤物一区二区三区 | 日韩在线视频播放 | 天天爽天天碰狠狠添 | 日韩视频一二三区 | 欧美日韩中文在线观看 | 婷婷六月天丁香 | 免费看久久久 | 超碰成人网| av免费电影网站 | 日日爽视频| 亚洲黄色免费在线 | 亚洲精品免费在线观看 | 免费男女羞羞的视频网站中文字幕 | 999一区二区三区 | 91视频高清免费 | av在线播放快速免费阴 | 久久成人免费电影 | 色999视频| 国产精品一区二区免费 | 精品9999 | 91网免费看| 亚洲天堂网在线播放 | 开心激情久久 | 在线观看www91 | 中文字幕在线观看一区二区 | 天天干天天草天天爽 | 国产97免费| 在线视频亚洲 | 中文字幕有码在线播放 | 91九色蝌蚪视频在线 | 天天爽天天搞 | 日韩电影在线视频 | 免费久久视频 | 黄色免费网站下载 | 五月天色中色 | 中文av影院 | 免费av片在线 | 丁香婷婷基地 | 国产亚洲精品久久久久秋 | 97在线观看免费 | 国产精品美乳一区二区免费 | 丁香婷婷综合激情 | 天天干天天操天天入 | 欧美一区二区三区四区夜夜大片 | 国产视频在线免费 | 欧美激情综合五月 | 成年美女黄网站色大片免费看 | 国产99久久久欧美黑人 | 欧美精品999| 免费观看第二部31集 | 在线看日韩av | 久久99精品视频 | 国产中文字幕在线视频 | 黄色a一级片 | 久久精久久精 | 美女视频黄网站 | 久久精品99国产国产 | 日韩超碰在线 | 尤物九九久久国产精品的分类 | 国产美女视频免费 | 91av电影网| 激情综合中文娱乐网 | 99久久精品日本一区二区免费 | 国产精品黄色在线观看 | 97**国产露脸精品国产 | 91人人爽久久涩噜噜噜 | 国产不卡在线视频 | 99国内精品 | 久久久久99精品成人片三人毛片 | www激情com | 麻豆传媒视频在线播放 | 手机在线看a | 精品国产乱码久久久久久浪潮 | 欧美日韩不卡一区二区三区 | 日韩免费电影 | 国产在线精品二区 | 在线观看深夜福利 | 日韩中文久久 | 蜜臀久久99精品久久久酒店新书 | 91精品一| 久一在线| 欧美日韩国产一区二区三区在线观看 | 欧美成人亚洲成人 | av成人免费在线看 | 国产精品久久久久久吹潮天美传媒 | 欧美成人黄色 | 久久国产精品视频观看 | 中文字幕av免费 | 久草精品电影 | 日韩在线一级 | 亚洲成人av电影在线 | 日韩精品一区二区三区免费视频观看 | 国产在线精 | 五月婷婷激情综合 | 欧美资源在线观看 | 开心综合网 | 欧美五月婷婷 | 日韩精品电影在线播放 | 久久精品在线免费观看 | 日日久视频 | 香蕉视频色 | 激情九九| 久久一区二区三区国产精品 | 亚洲成人黄色网址 | 伊人天天干 | 欧美aaa大片 | 国产视频资源在线观看 | 日日草夜夜操 | 97超碰色偷偷| 免费麻豆视频 | 91九色蝌蚪视频网站 | 国产一区国产精品 | 狠狠网站 | 91免费试看| 欧洲精品视频一区 | 日本精品中文字幕在线观看 | 国产日韩精品在线 | 久久免费视频5 | 久久久av免费 | 欧美一级日韩三级 | 麻花传媒mv免费观看 | 亚洲国产成人在线 | 久久艹99| 91在线精品秘密一区二区 | 免费看三级黄色片 | 黄色福利视频网站 | 亚洲精品一区二区三区在线观看 | 久久精品国产亚洲aⅴ | 日韩理论在线视频 | 日韩毛片在线免费观看 | 亚洲成av人影院 | 国产成人三级一区二区在线观看一 | 麻豆成人网 | 国产精品视频你懂的 | 亚洲精品视频免费观看 | 婷婷六月网 | 中文字幕在线成人 | av一区二区在线观看中文字幕 | 99精品免费观看 | 狠狠狠狠狠狠天天爱 | 久草在线中文888 | 国产91小视频 | 五月婷婷丁香在线观看 | 狠狠久久伊人 | 日日激情 | 亚洲日本一区二区在线 | 人人澡人人添人人爽一区二区 | 91视频观看免费 | 亚洲天堂色婷婷 | 免费人人干 | 视频二区在线视频 | 免费三级网 | 成人黄色国产 | 99r在线观看 | 成年人毛片在线观看 | a资源在线 | 久久久国产99久久国产一 | 在线观看91精品国产网站 | 亚洲h视频在线 | 中文字幕在线观看资源 | 久久久久国产精品一区 | 中文字幕在线国产精品 | 日韩高清在线一区二区 | 欧美天天干 | 91av99| 高清不卡一区二区在线 | 夜夜嗨av色一区二区不卡 | 亚洲永久国产精品 | 91亚洲网站 | 国产一级视频 | 久热色超碰 | 日韩专区 在线 | 黄色精品网站 | 亚州精品天堂中文字幕 | 男女啪啪网站 | 中文字幕在线观看一区二区 | 99在线精品免费视频九九视 | 国产精品久久久久9999 | 超碰在线1 | 麻豆观看| 五月婷婷综合激情网 | 蜜桃视频在线视频 | av中文国产| 亚洲劲爆av | 97成人精品视频在线播放 | 免费99精品国产自在在线 | 五月天激情电影 | 亚洲做受高潮欧美裸体 | 在线视频一区二区 | 精品国产伦一区二区三区观看体验 | 日韩高清免费无专码区 | 激情视频网页 | 国产日韩欧美视频在线观看 | 182午夜在线观看 | 久久极品 | 天天操天天爱天天爽 | 亚洲尺码电影av久久 | 欧美疯狂性受xxxxx另类 | 亚洲国产视频直播 | 高清久久久久久 | 在线国产能看的 | 国产精品一区二区白浆 | 国产精品美女免费 | 91精品久久久久久久91蜜桃 | 国产一区二区电影在线观看 | 国产精品久久久久久a | 欧美激情视频一区 | 亚洲精品在 | 国产成人精品三级 | 99精品乱码国产在线观看 | 99这里都是精品 | 国产精品白浆视频 | 亚洲精品在线视频播放 | 黄色亚洲| 欧美精品久久久久久久久久丰满 | 又黄又爽又刺激 | 91精品国产91p65 | 草久在线观看 | 日韩最新av | 国产一级片免费播放 | 日韩精品在线免费观看 | 91欧美精品| 一本大道久久精品懂色aⅴ 五月婷社区 | 久久久久欧美精品999 | 婷婷亚洲综合五月天小说 | 在线视频观看国产 | 啪啪精品 | 日韩av电影免费在线观看 | 在线看不卡av | 激情欧美一区二区三区 | 99亚洲天堂 | 婷婷在线免费观看 | 中文字幕在线一区观看 | 色姑娘综合网 | 五月激情在线 | 免费看的黄网站 | 午夜婷婷在线观看 | 久久a v电影| www中文在线 | av在线一二三区 | 欧美一级片免费观看 | 国产精品久久久久久久久久久久久 | 日韩a级免费视频 | 久热电影 | 久操操 | 国产色道 | 欧美成人黄色 | 国产伦精品一区二区三区免费 | 欧美精品在线观看免费 | 超碰在线最新网址 | 国产色婷婷在线 | 免费观看成年人视频 | 波多野结衣视频在线 | 国产在线小视频 | 国产精品毛片久久久 | 欧美日本一二三 | 亚洲资源在线观看 | 91av电影| 日韩中文字幕亚洲一区二区va在线 | 国产精品女教师 | 91av久久 | www.久久com | 久久精品国产一区二区 | 日韩精品久久久久久久电影99爱 | 六月丁香激情网 | 午夜影院在线观看18 | 99久久精品无免国产免费 | 精品国产一区二区三区男人吃奶 | 亚洲我射av | 欧美一区免费观看 | av一本久道久久波多野结衣 | 高清久久久| 91精品中文字幕 | 奇米导航 | 丁香六月欧美 | 国产91在线看 | 欧美爽爽爽 | 五月天色网站 | 精品国产资源 | 国产精品久久久久久久久久久久久久 | 久草综合在线观看 | 91视频 - x99av | 欧美日韩国产一区 | 毛片久久久 | 高清av中文字幕 | 久久久久久国产精品 | 色欧美88888久久久久久影院 | 91精品国产欧美一区二区 | 日本性高潮视频 | 国产精品久久网 | 久久九九影视网 | 激情一区二区三区欧美 | 五月激情婷婷丁香 | 亚洲成人网在线 | 国产精品igao视频网网址 | 91刺激视频 | 99热这里只有精品国产首页 | av电影不卡| 亚洲伊人色| 亚洲视频第一页 | 久久艹人人 | 久久99国产一区二区三区 | 亚洲成人av免费 | 国产成人精品一区二 | 在线观看一区二区精品 | a级国产乱理论片在线观看 伊人宗合网 | 西西444www大胆无视频 | 日韩理论片在线观看 | 日韩免费专区 | 午夜av网站| 成年人在线观看 | 91三级在线观看 | 欧美日韩一区二区三区在线免费观看 | 国内精品久久天天躁人人爽 | 成人黄色电影在线播放 | 中文字幕中文中文字幕 | 天天干天天操天天爱 | 成人免费观看大片 | 久久天天操 | www.色五月 | 日韩精选在线观看 | 久草免费新视频 | 国产亚洲日本 | 狠狠色噜噜狠狠狠合久 | 91亚洲精品国产 | .精品久久久麻豆国产精品 亚洲va欧美 | 97超碰人人模人人人爽人人爱 | 狠狠色丁香久久婷婷综合丁香 | www.天天干.com | 国产精品久久久久久久久久免费 | 五月情婷婷| 日韩欧美精选 | 中文国产在线观看 | 456成人精品影院 | 中文字幕色在线 | 激情视频一区 | 国产成人亚洲在线观看 | 91精品国自产在线 | 欧美在线一二 | 国产一区国产二区在线观看 | 1000部国产精品成人观看 | 中文字幕乱码在线播放 | 成人av片免费看 | 日本性xxxxx 亚洲精品午夜久久久 | 最近中文字幕 | 亚洲美女免费视频 | www.久草.com| 午夜视频导航 | 日韩精品免费 | 久久夜夜夜 | www..com黄色片 | 婷婷丁香自拍 | 国产高清视频在线播放 | 中文字幕一区二区三区乱码在线 | 视频在线观看一区 | 91免费观看国产 | 999在线精品 | 午夜免费电影院 | 天天操天 | 在线视频电影 | 亚洲欧洲精品一区二区精品久久久 | 国产色综合 | 久久久免费播放 | 色全色在线资源网 | 欧美日韩国语 | 免费网站看av片 | 免费在线黄 | 中文字幕字幕中文 | 久久99精品久久久久久清纯直播 | 中文在线8新资源库 | 日韩在线观看视频一区二区三区 | 亚洲综合在线观看视频 | 国产福利久久 | 欧美日韩91| 国产精品理论片在线观看 | 九色精品免费永久在线 | 亚洲精品久久在线 | 香蕉久久国产 | 亚洲一区二区三区四区在线视频 | 亚洲精选视频免费看 | 欧美a视频在线观看 | 亚洲精品999 | 欧美日韩在线精品一区二区 | 看片一区二区三区 | 免费在线成人av电影 | 日韩精品一区二区免费 | 欧美一级日韩三级 | 干天天 | 免费a网| 九九九热精品免费视频观看 | 天天操天天是 | 精品免费久久久久久 | 97超碰人人模人人人爽人人爱 | www婷婷| 欧美一级性生活片 | 视频国产在线观看18 | 成人久久视频 | 一本一道久久a久久精品蜜桃 | 国产在线v | 中文字幕乱视频 | 91亚洲网| 亚洲三级黄色 | 国产精品久久久久久久免费观看 | 免费视频一区二区 | 在线观看国产成人av片 | 国产精品va最新国产精品视频 | 中文字幕在线观看av | 五月开心婷婷 | 日韩专区av | 国产 日韩 欧美 中文 在线播放 | 欧美日韩亚洲一 | 日韩欧美视频二区 | 久久久久久久久亚洲精品 | a在线观看免费视频 | 亚洲精品国产精品乱码不99热 | 久草综合在线观看 | 免费视频一区二区 | 超碰免费在线公开 | 欧美日韩精品影院 | 超碰在线公开免费 | 欧美a视频在线观看 | 国产免费一区二区三区网站免费 | 日韩精品久久中文字幕 | 黄色大全免费网站 | 青青草国产免费 | 一区中文字幕在线观看 | 91专区在线观看 | 久久久精品久久日韩一区综合 | 99久久久成人国产精品 | 亚洲传媒在线 | 2021国产视频 | 免费在线91 | 久草在线高清视频 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 天天干天天做 | 日本精品一区二区 | 色偷偷网站视频 | 天天射天天射天天射 | 日韩3区 | 91精品网站 | 久久免费播放视频 | 91网在线 | 成年人免费在线观看 | 蜜臀久久99精品久久久无需会员 | 人人澡人摸人人添学生av | 国精产品999国精产品视频 | 精品国产激情 | www.成人精品 | 国产精品6| 精品一二三四五区 | 色激情在线 | 亚色视频在线观看 | 亚洲一区二区精品 | 美女精品在线观看 | 久久男人免费视频 | 日韩免费在线视频 | 丁香视频全集免费观看 | 国产精品网址在线观看 | 久久黄色成人 | 99久热在线精品视频 | 97超碰人人爱| 天堂va在线观看 | 久久永久免费 | av短片在线 | 激情五月综合 | 精品一区二区三区久久久 | 日韩a在线看 | 狠狠操在线 | 亚州激情视频 | 98福利在线 | 九九视频热| 久久无码av一区二区三区电影网 | 国产1区在线 | 亚洲婷婷综合色高清在线 | 国产精品女人网站 | 特黄特黄的视频 | 人人插人人费 | 日韩理论片在线观看 | 69视频在线播放 | 国产精品久久久电影 | 国产成人精品一区二区三区免费 | 成人在线免费观看网站 | 国产九九九精品视频 | 日日爽视频 | 天天天天天天天操 | 99欧美精品 | 超碰免费97| 日日夜夜干 | 在线观看激情av | 久草网在线视频 | 日本午夜免费福利视频 | 高潮久久久 | 亚洲精品www | 97成人精品视频在线播放 | 日本中文字幕电影在线免费观看 | 免费午夜在线视频 | 国产在线看一区 | 日韩免费一区二区在线观看 | 久久久亚洲麻豆日韩精品一区三区 | 亚洲午夜久久久影院 | 亚洲伦理一区二区 | 久久九九免费视频 | 精品爱爱 | 三级黄色在线观看 | 国产福利中文字幕 | 一区二区三区四区久久 | 精品a视频 | 99国产精品一区二区 | 欧美日韩视频观看 | 9999在线视频 | 国产精品aⅴ | 91在线免费观看网站 | 蜜臀av一区| 日韩免费专区 | 午夜精品久久久久久久久久久久 | 丁香花在线观看免费完整版视频 | 91丨九色丨高潮丰满 | 1024手机在线看 | 日韩aⅴ视频 | 中文字幕丝袜美腿 | 欧美日韩在线免费观看视频 | 伊人资源视频在线 | 天天爽天天爽 | 国产一级免费视频 | 久久综合色综合88 | 亚洲精品国产精品国自产观看 | 久久久精品国产免费观看一区二区 | 亚洲成人黄色在线 | 97精品伊人 | 日韩免费在线看 | 成年人黄色在线观看 | 日日噜噜噜噜夜夜爽亚洲精品 | av手机版| 波多野结衣一区二区 | 国产精品11 | 91av蜜桃| 日韩在线视频一区 | 99精品在线播放 | 国产视频欧美视频 | 国产探花 | 国产精品毛片一区二区 | 精品国产一区二区三区久久久蜜臀 | 最新中文字幕在线播放 | 就要干b | 91网在线观看 | а天堂中文最新一区二区三区 | 久久久精品福利视频 | 人人干人人做 | 能在线看的av | 久久久久免费网 | 91视频国产免费 | 超碰激情在线 | 久久首页 | 狠狠操影视| 国产理论一区二区三区 | 成人小视频在线免费观看 | 99国产一区 | 亚洲天天 | 亚洲 中文 欧美 日韩vr 在线 | 日韩网站免费观看 | 一区二区三区在线观看中文字幕 | 91成熟丰满女人少妇 | av一级在线| 久久久久久毛片 | 亚洲激情视频在线观看 | 天天干天天操天天做 | 成人亚洲欧美 | 五月激情婷婷丁香 | 久久精品国产一区二区电影 | 亚洲国产成人精品久久 | av在线电影免费观看 | 国产麻豆剧果冻传媒视频播放量 | 337p日本欧洲亚洲大胆裸体艺术 | 国产69精品久久久久久 | 麻豆国产精品永久免费视频 | 国产在线精品一区二区不卡了 | 激情文学综合丁香 | 日韩精品免费一区二区三区 | 精品视频久久 | 日韩三级视频在线观看 | 97精品一区 | 中文字幕在线观看你懂的 | 久久9精品 | 99久久毛片| 日韩网页| 狠狠色狠狠色综合系列 | 天天激情综合网 | 国内揄拍国产精品 | 特级西西人体444是什么意思 | 91精品久久久久久久91蜜桃 | 日本精品二区 | 在线看不卡av | 看片的网址 | 精品国产一区二区三区久久久久久 | 午夜三级在线 | 国产喷水在线 | 中文字幕在线免费 | 国产精品久久久久一区 | 欧美激情精品久久久久久 | 久久激情视频网 | 国产精品 国内视频 | 国产69熟 | 久久久观看 | 国产精品一区二区在线观看免费 | 中文字幕乱在线伦视频中文字幕乱码在线 | 国产第页 | 久久久香蕉视频 | 久热久草在线 | 欧美日韩一区三区 |