青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 132  文章 - 51  trackbacks - 0
<2012年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用鏈接

留言簿(7)

隨筆分類

隨筆檔案

文章分類

文章檔案

cocos2d-x

OGRE

OPenGL

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

原文地址:子龍山人教程 http://www.cnblogs.com/zilongshanren/archive/2012/04/28/2473282.html



原文鏈接地址:http://www.raywenderlich.com/11283/cocos2d-x-for-ios-and-android-getting-started

教程截圖:

    Cocos2D是一個非常棒而且非常容易使用的游戲框架,但是,由于它是采用objc寫的,所以你只能使用它來開發ios和mac下面的游戲。

    假如你可以使用和cocos2d相似的api來開發android上面的游戲,那豈不是更爽?這樣,你就可以毫不費勁地擴大你的游戲的市場份額(android的用戶數量巨大啊!)

    好吧,確實存在這么一個游戲框架,她就是cocos2d-x!cocos2d-x采用c++把cocos2d的api重新移植了一遍,,除了一些語法細節上面的差異之外,你可以使用幾乎一樣的api來編寫游戲。正是由于它是c++寫的,所以可以跨多個平臺,從ios到android、windows、再到linux、bada等!

    在這篇教程里面,你將學習到,如何使用cocos2d-x和c++來編寫一個能夠同時在ios和android設備上面跑的“Hello World”程序。

    而且,過兩天,我會再出一篇教程,向大家展示一個具體的游戲例子---一個跨平臺的太空射擊游戲!

    好了,帶上你的iPhone和Android設備,讓我們開始吧!

Hello, Cocos2D-X for iOS!

    在繼續之前,確保你先下載最新版本的cocos2d-x

    隨便在你的硬盤的某個位置上面解壓就可以了。注意,這個解壓出來的文件夾的完整路徑名,我們之后會用一個統一的別名 $COCOS2DX_HOME來指代。

    現在,你已經下載到源碼了,讓我們來安裝項目模板吧!你可以先cd到$COCOS2DX_HOME這個目錄(譯者:指你剛剛解壓縮代碼的存放路徑)下面去。在安裝模板之前,先退出Xcode,然后打開一個終端,并輸入下面的命令:

cd $COCOS2DX_HOME sudo ./install-templates-xcode.sh -u
注意: 在上面所示的代碼中,你不能直接輸入$COCOS2DX_HOME,而要輸入實際的路徑。如果你直接輸入了$COCOS2DX_HOME是不會有任何反應的。當然,你可以參考我寫的《如何在macos下面配置集成ios和android游戲教程》,里面有講到環境變量的配置。大概方法就是打開~/.bash_profile文件,然后用export來定義環境變量就ok了。

    你可能會被要求輸入管理員密碼(加了-u應該是不需要輸入密碼的,不加-u就需要輸入),之后的過程就非常簡單了。在模板安裝好之后,啟動xcode,然后創建一個新的項目。這時,你可以在項目模板對話框中看到有cocos2d-x的模板了。不用擔心,cocos2d-x的模板與cocos2d的模板并不會有沖突,因此,你還是可以創建cocos2d的項目。

    讓我們來試一下新模板吧!打開Xcode,然后創建一個新的工程,選擇 iOS\cocos2d-x\cocos2dx模板,如下圖所示:

    把工程例句為Cocos2DxFirstIosSample,然后保存。

   現在,編譯并運行,你將會看到cocos2d-x的hello wolrd程序跑起來了,如下圖所示:

    非常簡單,不是嗎?這時,你可以看看xcode里面的文件,特別是Classes\HelloWorldScene.H和Classes\HelloWorldScene.cpp。如果你也熟悉cocos2d的話,那么里面的代碼看起來會覺得非常熟悉---幾乎完全一樣的cocos2d API,只是語言是c++而已!

配置cocos2d-x的eclipse開發環境

    現在我們已經完成了Xcode4的hello world程序了,是時候看看如何使用eclipse來配置android 的cocos2d-x開發環境了。

    這篇教程假設你有一個可以進行Android開發的標準開發環境。如果你還沒有的話,可以參考這篇教程來配置,它里面提供了詳細的過程,教你如何一步步配置好一個標準的eclipse android開發環境。

   但是,請等一下。一個標準的eclipse android開發環境是專為java開發設計的,而cocos2d-x卻是基于c++來做開發的!

    不用擔心,eclipse已經有10年的歷史了,它有許多插件可以支持其它語言的開發,這當然就包括c/C++語言的插件啦。先讓我們來安裝這個插件吧。打開eclipse,然后執行以下步驟:

  • 從Eclipse IDE的主工具欄上面,選擇Help/Install New Software。
  • 打開Work With復選框,并從中選擇一個包含你的eclipse版本名稱的項(如果是最新版的eclipse的話,就選擇indigo)
  • 在插件樹里面找到Programming Languages (只有當你復選中“Group items by category”時,你才可以看到插件樹。)并打開它.
  • 選擇CDT插件,然后安裝下列組件。(但是,請注意,你如果直接就點擊C/C++ Development Tools的話,你是得不到下圖所示的樣子的,你還需要在“Mobile Development”里面去查找相關的項)(譯者:我沒找了,直接就選擇了C/C++ Development Tools就Next安裝了)

 點擊next來完成向導,然后等待組件下載并安裝。現在,你可以使用eclipse來開發C/C++項目了!

Setup the Android NDK (Native Development Toolkit)

 本來,android開發只能采用java,而且現在市場上面大部分的app也是采用java寫的。

    然而,現在你還可以通過Native Development Toolkit (NDK),使用C/C++來編寫android程序。這種編程方式是由Google在2009年6月份引入的,它允許一些組件采用C/C++來編寫,然后通過標準的Java Native Interface (JNI)來調用。

安裝NDK的過程非常簡單:

  • 下載最新版本的NDK。 here (注意選擇 MacOSX 平臺).
  • 解壓tar.bz2 到任意目錄.之后,我會使用$NDKROOT來指定這個解壓縮后的目錄。

    NDK給Android開發帶來了全套的C/C++編譯工具集,可以使用GCC4.4.3來編譯來鏈接并且可以構建即時安裝的APK包。

   有了這套編譯工具集,我們就可以在eclipse里面集成一些外部的C/C++庫(比如cocos2d-x)。這些庫被編譯成動態庫,然后通過JNI(Java Native Interface)與Java Android體系程序進行交互。

這些編譯工具集可以采用下面兩種方式使用 :

  • 獨立模式: 直接在你的makefile中使用 arm-linux-androideabi-g++. 這種方式會增加你的項目的復雜性和可維護性。我推薦你不要使用這種方式。
  • 集成模式: 使用$NDKROOT/ndk-build shell 工具,它是一種高度可定制的makefile,專門為NDK庫所設計的。這也是我們這篇教程所采用的方式。

 

解釋JNI和NDK可能會花費大量時間,而且也超出了本教程的討論范圍。現在網絡上有許多關于JNI的資源。這里還推薦一本書,它也討論了JNI這個主題。

    如果你需要更多關于NDK的信息,這里推薦一本非常好的書,它里面涵蓋了使用C/C++進行NDK開發,書名是: Android Native Development Kit Beginner’s Guide。這本書覆蓋了NDK編程的方方面面,可謂是“從入門到精通”,而且NDK本身也帶有非常詳細的文檔,在$NDKROOT/docs路徑下面。

Hello, Cocos2D-X for Android!

    現在,讓我們在Andriod平臺上面來開發一個“Hello,World”程序吧,就像我們之前在ios平臺上的程序一樣。

    我們需要通過命令行來完成工作,因為目前還沒有在Eclipse IDE里面集成cocos2d-x的模板。

    在$COCOS2DX_HOME目錄下面包含一個shell腳本,叫做create-android-project.sh,我們可能通過它來創建android項目。但是,在運行腳本之前,我們需要在腳本文件的頂部做一些修改: 

# set environment paramters NDK_ROOT_LOCAL="/home/laschweinski/android/android-ndk-r5" ANDROID_SDK_ROOT_LOCAL="/home/laschweinski/android/android-sdk-linux_86"

 

修改上面這些行,把NDK_ROOT_LOCAL指向你安裝Android NDK ($NDKROOT)的位置,同時把ANDROID_SDK_ROOT_LOCAL指向你安裝Android SDK位置。(譯者:這里其實可以不用修改,讀者可以打開這個sh腳本去看看為什么。如果之前看過我的配置教程,里面有配置一個全局的NDK_ROOT和ANDROID_SDK_ROOT。這個腳本在判斷有全局的環境變量存在的時候,會直接替代NDK_ROOT_LOCAL和ANDROID_SDK_ROOT_LOCAL。)

    現在,可以運行create-android-project.sh腳本了,然后你會接收到一系列的提示輸入。我們將一個個向您解釋一下:

  1. 第一個提示要求你“Input package path”。這個包名會給后面的java代碼使用。你可以使用你的域名反過來寫,類似寫ios的bundle ID。比如com.yourdomain.samplecocos2dxandroid ,記住實際輸入的時候要替換掉“com.yourdomain”。
  2. 接下來,你會得到一系列可用的Android API和它們的id號。這個具體取決于你的機器上面安裝的Andriod API的情況。
  3. 最后,你需要提供項目的名稱,在這里取名為samplecocos2dxandroid

命令行的輸出大致如下:

 

復制代碼
bash-$ ./create-android-project.sh Input package path. For example: org.cocos2dx.example org.jymc.samplecocos2dxandroid . . . Available Android targets: ---------- . . . ---------- id: 9 or "Google Inc.:Google APIs:15"      Name: Google APIs      Type: Add-On      Vendor: Google Inc.      Revision: 1      Description: Android + Google APIs      Based on Android 4.0.3 (API level 15) . . . input target id: 9 input your project name: samplecocos2dxandroid
Created project directory:
/Users/jymen/development/cocos2dx/samplecocos2dxandroid . . . Added file /Users/jymen/development/cocos2dx/samplecocos2dxandroid/AndroidManifest.xml Added file /Users/jymen/development/cocos2dx/samplecocos2dxandroid/build.xml Added file /Users/jymen/development/cocos2dx/samplecocos2dxandroid/proguard.cfg bash-$
復制代碼

 注意“Created project directory:”這一行是腳本文件最后輸出來的,這個輸出的路徑也就是你的Andriod項目被創建好的路徑。我這里指的是/Users/jymen/development/cocos2dx/samplecocos2dxandroid,如上圖所示:

Note: Do not try to move the project from that location to a different location. At least one of the scripts we’ll work with in the next section will not work if you do.

建工程

    這里有兩個步驟來構建項目----首先通過命令行腳本編譯c++代碼,然后通過ecipse來編譯java代碼。

    為了編譯c++代碼,我們需要切換到$PROJECT_HOME/android文件夾下面去,然后在終端里面輸入下列命令:

./build_native.sh

你應該會看到下面類似的輸出:

復制代碼
Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver Gdbsetup       : libs/armeabi/gdb.setup Compile++ thumb  : cocos2d <= CCConfiguration.cpp Compile++ thumb  : cocos2d <= CCDrawingPrimitives.cpp : : : Compile++ thumb  : cocos2d <= CCTileMapAtlas.cpp Compile++ thumb  : cocos2d <= CCTouchDispatcher.cpp Compile++ thumb  : cocos2d <= CCTouchHandler.cpp Prebuilt       : libstlport_static.a <= /sources/cxx-stl/stlport/libs/armeabi/ SharedLibrary  : libcocos2d.so Install        : libcocos2d.so => libs/armeabi/libcocos2d.so Compile++ thumb  : cocosdenshion <= SimpleAudioEngine.cpp Compile++ thumb  : cocosdenshion <= SimpleAudioEngineJni.cpp SharedLibrary  : libcocosdenshion.so Install        : libcocosdenshion.so => libs/armeabi/libcocosdenshion.so Compile++ thumb  : game_logic <= AppDelegate.cpp Compile++ thumb  : game_logic <= HelloWorldScene.cpp SharedLibrary  : libgame_logic.so Install        : libgame_logic.so => libs/armeabi/libgame_logic.so Compile++ thumb  : game <= main.cpp SharedLibrary  : libgame.so Install        : libgame.so => libs/armeabi/libgame.so
復制代碼

 這里就是在編譯cocos2d-x庫和你的項目里面的c++文件。

    為了編譯java代碼,我們需要創建一個eclipse工程---這可比命令行要方便多了。:)

    打開Eclipse,然后他吃軟飯File\New\Other,選擇Android\Android Project,然后點擊Next,在Project Name里面輸入samplecocos2dxandroid ,然后選擇 Create project from existing source,然后瀏覽到$PROJECT_HOME/android文件夾,如下圖所示:

 

  點擊Next,選擇一個 Android version to target(這里選擇的是3.2,你可以選擇任何一個)

點擊Finish,好了,現在你有一個工程了!

在左邊的樹上右擊項目,選擇Run As\Android Application,然后AVD (Android Virtual Device)就會啟動,然后就會跑出來Hello, Cocos2D-X項目了!

 

 注意:如果程序沒有啟動的話,你需要按照提示去創建一個AVD來測試。更多的細節,請參考Getting Started with Android Development 這篇教程。

    恭喜你,你現在有一個“HelloWorld”項目可以同時跑在iosandroid上面了!

 

Eclipse里面定一個java/c++的工程

 

    通過命令腳本來編譯c++代碼,完了之后用eclipse來編譯java代碼,這種來回切換的做法非常笨重。如果全部可以用eclipse來完成的話,那么生活會更簡單一些。

    幸運的是,我們可以告訴eclipse,我們的android項目是一個集成java/c++的跨語言項目!

   為此,我們在左邊的項目樹上選擇samplecocos2dxandroid,然后從菜單里面選擇File\New\Other,然后從對話框里面選擇C/C++\Convert to a C/C++ Project,如下所示:

 

點擊Next。在下一個屏幕里面,選中你的項目,然后選擇c++單選按鈕,然后為Project type指定Makefile project\Other Toolchain,如下所示:

  點擊完成。這時eclipse會詢問你是否打開C/C++視圖,當對話框出現的時候,選擇NO。

   接下來的步驟就是修改項目設置,指定如何運行我們的make命令。在左邊的項目樹上,右擊samplecocos2dxandroid工程,選擇Properties,然后選擇C/C++ build

取消“Use default build command”復選框,然后在build文本框中輸入下面的命令:

bash ${workspace_loc:/samplecocos2dxandroid}/build_native.sh NDK_DEBUG=1 V=1

點擊Apply,然后點OK。

   回到ecipse,從主菜單中選擇Project\Build All,這時你可以在ecipse的控制臺輸出中看到c++ make在運行。

我們仍然有一些警告需要解決。想知道我是什么意思嗎,你打開jni/helloworld/main.cpp,這里你會看到一系列的警告,如下所示:

這些警告之所以會出現,是因為我們沒有配置正確的c++包含路徑。為了解決它,我們右擊samplecocos2dxandroid工程,然后選擇Properties\C/C++ General\Path and Symbols\GNU C++。

   選擇Add…按鈕來選擇下面的目錄,之后點擊Apply和OK。

$(NDKROOT)/platforms/android-9/arch-arm/usr/include $(COCOS2DX_HOME)/cocos2dx/include

注意: 不用忘了使用實際的路徑來替換掉$(NDKROOT) 和$(COCOS2DX_HOME)。

 

 點擊Apply,這時會提示你是否重建索引。直接點擊yes繼續就可以了。

   現在,你再看看main.cpp,你會看到大部分警告已經消失了。

 但是,AppDelegate.h文件還是找不到。這是因為AppDelegate.h是在$PROJECT_HOME\Classes文件夾下面。這個文件夾對我們來說非常重要,因為它包含了我們工程里面的可移植的c++類,比如HelloWorldScene.cpp等。

    當我們創建eclipse項目的時候,我們必須選擇$PROJECT_HOME\android文件夾,因為eclipse需要一個AndroidManifest.xml文件。但是,這樣的話,我們的工程就不包括關鍵的“Classes”文件夾了,這也是為什么我們會得到這么多警告的原因。

   讓我們來修正它吧。右擊samplecocos2dxandroid項目,選擇Properties\C/C++ General\Paths and Symbols\Source location。點擊Link Folder,然后復選中Link to a folder in the file system,接著瀏覽到$PROJECT_HOME文件夾,并指向Classes目錄,最后點Apply和OK。

你現在可以在文件樹里面看到Classes目錄了,而且在main.cpp里面的#include “AppDelegate.h”警告也應該消失了。

   Eclipse工程里面還會有許多警告,但是,這是因為eclipse對于解析c++頭文件的能力并不強大。為了消除這些警告,我們又需要設置一下項目設置。(右鍵點工程,然后選擇Properties),把Code Analysis部分的warnings關閉,如下圖所示:

 然后點擊Apply和OK,這時,你就得到一個工程可以在eclipse里面進行編輯了。

 

What About the Java Code?

    這時你在eclipse里面再找找看,你會在src和gen目錄下面找到一些java代碼,你肯定很好奇這些代碼是干嗎用的。

   Andriod開發采用的主要語言是java,這個項目模板已經為我們創建了一些java框架代碼,用來加載c++編寫好的動態庫。

   一般情況下,你是不需要修改這些java代碼的,但是,還是讓我們來看看src\com\xxx\samplecosos2dxandroid\samplecocos2dandroid.java這個類。

   這個類包含了主Android Activity類,當應用程序啟動的時候會加載。它首先通過NDK來請求編譯好的c++動態庫。(如果采用的是最新版的coocs2dx的話,下面只會加載一個game庫)

 

 由于類是從Cocos2dxActivity所派生,在后臺cocos2d-x會把控制權移交給c++的AppDelegate 的initInstance方法來處理,最后applicationDidFinishLAunching方法也就被執行起來了。

    因此,再重申一遍,java代碼只是一些包裝代碼,大部分情況下我們都不要去修改它,因為我們的游戲邏輯是由c++寫的。

So to repeat, the Java code just contains wrapper code that you will rarely need to change, since all the game’s logic will be inside the C++ code.

連接andriodios

    現在,我們有兩個cocos2d-x的項目了,一個是ios下面的,一個是andriod下面的。我們的目標是讓兩個工程共享同樣的目錄,這樣就可以使用同樣的c++文件了。

    我們兩個項目里面,都有一個文件夾叫做“Classes”,它包含了我們的可移植的游戲代碼(如下圖:android的在左邊,ios的在右邊)

  如果你仔細看看eclipse和xcode里面的Classes目錄,你會發現這些c++文件完全相等。因此,我們需要做的就是讓兩個項目指向同一個文件夾就ok了!

 

    為了實現這個目標,在xcode里面打開Cocos2DxFirstIosSample項目。選擇Classes分組,然后點擊Delete,選擇“Move to Trash”;

    接下來,右鍵Project Navigator,選擇“New Group”,然后重命名為Classes。點鍵Classes,點擊Add Files。然后選擇$PROJECT_HOME\Classes目錄,同時確保“Copy items into destination group’s folder”沒有被選中!

 然后clean并rebuild xcode項目,并運行一下,確保一切ok。

   恭喜,現在基礎配置全部弄好了!你可以試著在eclipse里面修改,xcode這邊運行,或者xcode里面修改,eclipse里面運行了。

什么候使用 Xcode, 什么候使用Eclipse?

    現在,你有兩個項目了,那么問題馬上就出來了,我們到底什么時候該使用哪一個呢?

    使用cocos2d-x通常的開發策略是,首先在ios上面通過xcode來測試,確認沒問題后,再通過eclipse來測試。只需要在心里記住下面幾點就行:

  1. 經常測試.完一個小功能之后,就應該andriod上面測試看行不行。這樣,就不至于遇到問題找不到了。 
  2. 在多個設備上面測試: 現在市場上面有大量的android設備,而且它們的差別很細微,所以,你要盡可能多地測試多種不同型號的設備。

當然,你也可以先在andriod上面測試,然后再在ios上面測試。但是這樣肯定會降低你的生產率。因為xcode比eclipse反應速度更快,而ios模擬器比android的模擬器的啟動速度也要快一些。

調試技巧

在ios上面調試cocos2d-x和cocos2d的方法差不多,這里也沒什么多講的。

然而,對于Android,這里有幾點需要注意下。

   當使用NDK來調試的時候,一個“服務端的”gdb和gdbcontext被ndk-build shell腳本塞到APk里面去了。這個遠程的gdb調試器可以與任何gdb兼容的客戶端進行通信。

   Eclipse里面最好的gdb agent就是 NVidia debug manager plugin,但是安裝這個插件不在本教程的討論范圍之內。

注意: 如果你想安裝NVidia Debug Manager plugin,你首先到這個頁面下載完整的Tegra Android開發包,即便你可能現在并不需要它。然后,安裝Tegra Developer,它會提示你安裝哪些項,然后你可以選擇NVidia Debug Manager plugin這個插件了。當你安裝完之后,它并沒有包插件安裝到eclipse里面去,而是把zip文件放在你的硬盤的某個位置,你可以參考這個pdf文檔來進行安裝。

    我發現在一些物理設備(比如Samsumg Galaxy S),remote debugger老是啟動不了,但是使用AVD就可以正常啟動。

   為了啟動一個debug會話,你可以選擇你的項目,然后右擊Debug As Android NDK application,如下圖所示: 

 

請注意,只有你安裝了NVidia debug manager plugin,你才會在右擊的時候看到Android NDK Application這個選項。

   你可以在一行代碼上面雙擊來設置一個斷點,如下所示:

 

 當斷點到達的時候,它將會停留在斷點所在行:

 悲催的是,使用gdb來調試android有時候并不管用,所以,你可能需要添加一些額外的tracing系統。想知道更多的信息,請聯系我,我將與大家分享這些tips。

何去何從?

    恭喜你,你現在可以使用cocos2d-x來開發iphone和android下面的游戲了。

   請耐心等待我的第二篇教程吧,它將帶你一起開發一個跨平臺的太空射擊游戲,當然是使用cocos2d-x啦!

   如果你遇到什么問題,或者有什么意見或建議,歡迎留言!

   更多精彩教程,請關注泰然首頁:)



posted on 2012-10-24 09:29 風輕云淡 閱讀(6244) 評論(0)  編輯 收藏 引用 所屬分類: cocos2d
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区在线观看视频 | 蜜臀久久99精品久久久久久9 | 亚洲精品久久久久久久久久久久 | 久久久久久久尹人综合网亚洲| 亚洲国产成人tv| 亚洲电影毛片| 亚洲精品欧洲| 午夜国产精品视频| 久久久久久欧美| 欧美日韩国产小视频| 亚洲第一精品福利| 国产日韩综合一区二区性色av| 国产精品视频午夜| 亚洲国产99| 欧美亚洲一区三区| 亚洲欧洲日夜超级视频| 午夜视频久久久久久| 欧美精品一区二区三区在线看午夜 | 亚洲一区二区成人| 欧美在线国产精品| 亚洲高清不卡一区| 久久久国产精彩视频美女艺术照福利| 欧美福利一区| 在线成人黄色| 久久深夜福利免费观看| 亚洲性线免费观看视频成熟| 欧美激情综合在线| 亚洲第一福利视频| 欧美黄色视屏| 久久久久久一区| 亚洲国产精品第一区二区| 久久精品一二三| 久久精品一区二区国产| 国内精品免费午夜毛片| 另类天堂视频在线观看| 久久综合免费视频影院| 亚洲欧洲日本国产| 91久久久久久久久| 欧美激情偷拍| 久久久久久久成人| 99视频一区| 国产精品无人区| 久久精品夜夜夜夜久久| 免费的成人av| 一区二区久久久久久| 在线视频日本亚洲性| 韩国av一区二区| 欧美丰满少妇xxxbbb| 欧美日一区二区在线观看| 午夜欧美不卡精品aaaaa| 久久九九精品99国产精品| 在线成人激情视频| 亚洲精品中文字幕在线观看| 国产视频丨精品|在线观看| 亚洲国产小视频在线观看| 欧美日韩一区二区欧美激情| 另类亚洲自拍| 国产精品高潮呻吟视频| 欧美成人有码| 激情五月综合色婷婷一区二区| 亚洲韩国一区二区三区| 国产一区二区av| 亚洲精品视频在线播放| 国产午夜精品麻豆| 一二美女精品欧洲| 亚洲小少妇裸体bbw| 美女精品在线观看| 猛干欧美女孩| 在线播放中文字幕一区| 欧美一区二区在线播放| 亚洲欧美国产77777| 欧美日韩中文字幕在线视频| 欧美性视频网站| 亚洲精品一品区二品区三品区| 亚洲成人在线| 国产精品网红福利| 一区二区日本视频| 一区二区三区|亚洲午夜| 欧美紧缚bdsm在线视频| 亚洲精品综合| 久久久精品性| 在线成人h网| 国产精品video| 午夜日韩av| 亚洲国产精品尤物yw在线观看| 日韩视频精品| 久久精品国产综合精品| 国内伊人久久久久久网站视频 | 一本久久青青| 欧美日韩伦理在线免费| 亚洲一区在线免费观看| 欧美韩日高清| 香蕉成人久久| 亚洲精品影视在线观看| 欧美体内she精视频| 久久午夜精品一区二区| 中日韩美女免费视频网址在线观看 | 亚洲欧美日韩另类精品一区二区三区| 国产精品区一区二区三| 久久综合色婷婷| 欧美亚洲一区二区三区| 欧美国产成人精品| 欧美一级淫片aaaaaaa视频| 亚洲国产婷婷| 国产亚洲欧美一区二区| 久久久爽爽爽美女图片| 99国产一区二区三精品乱码| 国产在线精品成人一区二区三区| 欧美色123| 国产精品九九| 国产精品久久久久国产a级| 欧美日本韩国一区| 欧美日韩裸体免费视频| 欧美三级电影一区| 久久综合网色—综合色88| 久久婷婷一区| 久久精品最新地址| 欧美大片网址| 欧美三级网址| 国产精品理论片在线观看| 国产欧美在线| 国产精品日韩精品| 国产真实精品久久二三区| 一区二区亚洲欧洲国产日韩| 亚洲美女视频网| 欧美一区二区久久久| 久久女同互慰一区二区三区| 欧美成人四级电影| 久久精品亚洲一区| 国产精品一区二区欧美| 欧美不卡视频| 欧美电影打屁股sp| 日韩一级免费观看| 91久久精品一区二区三区| 午夜精品999| 欧美日韩国产综合在线| 国产乱码精品一区二区三区忘忧草| 亚洲黄色天堂| 久久婷婷成人综合色| 久久国产一区二区| 国内精品久久久久影院色| 亚洲少妇一区| 亚洲人成免费| 欧美高清视频一区二区| 亚洲高清色综合| 欧美寡妇偷汉性猛交| 久久久久久久精| 久久九九热re6这里有精品| 日韩视频永久免费| 国产精品分类| 久久久久久久精| 欧美激情视频一区二区三区在线播放| 亚洲国产日韩在线| 欧美激情一区二区三区蜜桃视频| 久久久水蜜桃| 91久久国产综合久久蜜月精品| 麻豆成人在线| 欧美a级片网| 午夜一区在线| 久久精彩免费视频| 黄色成人在线网站| 亚洲第一中文字幕在线观看| 欧美日韩一区二区在线观看视频| 亚洲免费视频成人| 美女国产一区| 国产亚洲成人一区| 亚洲国产成人在线| 午夜久久黄色| 欧美日韩国产综合视频在线观看 | 欧美精品国产精品| 亚洲一区二区在线视频| 美女精品网站| 久久久亚洲精品一区二区三区 | 欧美三级不卡| 久久综合成人精品亚洲另类欧美 | 亚洲精品亚洲人成人网| 国产精品一区久久久久| 一本久道综合久久精品| 99国产精品久久久| 欧美激情一区二区三区全黄| 一区二区日韩伦理片| 久久综合九色综合网站| 欧美77777| 一区二区在线视频| 久久久久一本一区二区青青蜜月| 久久精品免费电影| 黑丝一区二区三区| 久久国产黑丝| 国产毛片精品国产一区二区三区| 美女诱惑黄网站一区| 国产一区日韩欧美| 欧美在线视频观看| 欧美国产第一页| 日韩午夜在线视频| 欧美成人精品高清在线播放| 欧美成人首页| 性做久久久久久| 91久久亚洲| 国产精品久久久久久久免费软件| 欧美亚洲视频|