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

隨筆 - 96  文章 - 255  trackbacks - 0
<2013年8月>
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

E-mail:zbln426@163.com QQ:85132383 長(zhǎng)期尋找對(duì)戰(zhàn)略游戲感興趣的合作伙伴。

常用鏈接

留言簿(21)

隨筆分類

隨筆檔案

SDL相關(guān)網(wǎng)站

我的個(gè)人網(wǎng)頁(yè)

我的小游戲

資源下載

搜索

  •  

積分與排名

  • 積分 - 495367
  • 排名 - 39

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

作者:龍飛

1.1:游戲中的退出習(xí)慣。

        如同我們經(jīng)常遇到的游戲,一般想退出的時(shí)候,我們會(huì)習(xí)慣性的按下ESC——即使游戲不會(huì)馬上退出,也一般會(huì)調(diào)出一個(gè)帶有退出選擇的菜單。我們希望修房子的時(shí)候,最好先計(jì)劃在哪里修門(mén),所以,我認(rèn)為應(yīng)該優(yōu)先掌握“退出游戲”的方法。簡(jiǎn)單的說(shuō),我們啟動(dòng)了一個(gè)SDL程序,我們希望按下ESC就能退出,怎么實(shí)現(xiàn)?

1.2:事件(event)查詢初探。

        在計(jì)算機(jī)科學(xué)領(lǐng)域,隱喻無(wú)處不見(jiàn)。所有的抽象概念,若不是被很好的用形象概念或者已經(jīng)被理解的抽象概念去解釋,其本身很難讓人們明白是什么。事件,在這里指的就是計(jì)算機(jī)所直接感知到的玩家對(duì)于其的作用。比如你按下某個(gè)鍵,又松開(kāi),移動(dòng)了鼠標(biāo)等等。所有的這些行為都被稱為事件。在計(jì)算機(jī)看來(lái),任何事件的發(fā)生都是有先后的(如果你了解相對(duì)論,你就會(huì)知道其實(shí)世界上任意兩點(diǎn)間并不存在“同時(shí)”的概念)。如果計(jì)算機(jī)工作效率很低,這些事件就會(huì)排著隊(duì)列等待接受處理——這里又用到一個(gè)模型的隱喻——隊(duì)列(queue),這是計(jì)算機(jī)算法與數(shù)據(jù)結(jié)構(gòu)知識(shí)中很重要的概念,往往意味著其特征是“先進(jìn)先出”。
        我們就從這個(gè)事件隊(duì)列(event queue)的模型去思考吧。要知道,隊(duì)列是有可能為空的,這就如同銀行的服務(wù)窗口前面不會(huì)總是有人排隊(duì)一樣——當(dāng)然,我假設(shè)你不是總呆在北京,也去過(guò)一些小城市^^,那么,沒(méi)有客戶在窗口前需要被服務(wù)的時(shí)候,這個(gè)窗口的工作人員應(yīng)該是什么狀態(tài)呢?至少有兩種不同的等待方式:一種是什么也不做傻等;一種是邊喝點(diǎn)茶看看報(bào)紙算算賬什么的其他事情邊等待。對(duì)于計(jì)算機(jī)來(lái)說(shuō),第一種停下來(lái)等,就是wait;第二種繼續(xù)做其他事情的同時(shí)等,就是poll。前者一看就明白,后者被不知道某位前輩高人翻譯成“輪詢”,好吧,說(shuō)句實(shí)話,我笨,光看“輪詢”這個(gè)詞,完全無(wú)法理解是什么意思-_-!!!
        SDL為我們提供了兩種等待事件的方式:
int SDL_WaitEvent(SDL_Event *event);
int SDL_PollEvent(SDL_Event *event);

        兩個(gè)函數(shù)的返回值都是int,形參是SDL事件結(jié)構(gòu)(C++里面,就把結(jié)構(gòu)看成類吧。)指針SDL_Event*(請(qǐng)注意我把SDL_Event和*連著寫(xiě),這意味著在認(rèn)識(shí)上,我把SDL_Event*本身看成一種復(fù)合類類型。)我們知道,在C\C++里面,函數(shù)至少有三種基本功能。1、像命令似的起了某種作用;2、通過(guò)計(jì)算得到我們需要的返回值;3、指針(C++里面的引用)參數(shù)也可以傳值。這里,我們先忽略SDL_Event結(jié)構(gòu)的構(gòu)造,看看這兩個(gè)函數(shù)的作用。首先,他們不會(huì)引起某種作用;其次,他們的返回值是1或者0;最后,他們會(huì)通過(guò)指針參數(shù)傳值,這是重點(diǎn)。
        早期的C里面,是沒(méi)有關(guān)鍵字true和false的。通常用1代表true,0代表false。我個(gè)人覺(jué)得,在SDL里面,1和0的概念最容易與-1和0的概念混淆。我們?cè)趯W(xué)習(xí)SDL_Init的時(shí)候,說(shuō)到返回值0代表成功,-1代表失敗。其實(shí)細(xì)細(xì)想,還是有差別的。0和1是計(jì)算機(jī)固有的數(shù)據(jù)表示方式,而-1是計(jì)算機(jī)原始方式所無(wú)法理解的,所以會(huì)代表著異常。所以,在異常退出的時(shí)候,我選擇使用return -1。
        這兩個(gè)函數(shù)的返回值,在等到了事件的時(shí)候,返回1,否則返回0。官方文檔里面用類似while(SDL_PollEvent(&event))的方法引導(dǎo)輪詢機(jī)制的開(kāi)始,但是我覺(jué)得,對(duì)于新手來(lái)說(shuō),這樣的表述不是很直觀。與其間接的問(wèn)窗口的服務(wù)員有客戶來(lái)嗎,還不如自己直接看看有沒(méi)客戶(event queue是不是為空)。所以,在后面的例子里面,我實(shí)際上用的是if ( &event != 0 )。

1.3:當(dāng)前窗口。

        如果你有興趣研究SDL的官方文檔,看到事件介紹(Introduction to Events)部分,也許會(huì)對(duì)以下問(wèn)題感覺(jué)到奇怪:SDL的事件查詢機(jī)制是與SDL_INIT_VIDEO同時(shí)裝載的。為什么呢?
        我們知道,我們開(kāi)發(fā)的游戲?qū)嶋H上是運(yùn)行在操作系統(tǒng)的平臺(tái)上的。當(dāng)前的操作系統(tǒng),都是多任務(wù)的操作系統(tǒng)。具體說(shuō)到GUI,有個(gè)很重要的概念就是你目前操作的是哪個(gè)程序,也就是更形象的概念——當(dāng)前窗口。有些event可能是各個(gè)窗口,甚至包括系統(tǒng)本身共享的,比如鼠標(biāo)移動(dòng)(這不是絕對(duì)的,只是有可能);有些event只會(huì)被當(dāng)前窗口接受,就如同你不會(huì)希望同時(shí)開(kāi)著兩個(gè)Word文件在編輯,修改一個(gè)文件的時(shí)候,另外一個(gè)也被無(wú)情的修改了。所以,SDL程序運(yùn)行的時(shí)候,只有指定了哪個(gè)窗口是這個(gè)程序的窗口,并且這個(gè)窗口是當(dāng)前窗口的時(shí)候,大部分event才能被正確的響應(yīng)。
        注意,console窗口不是SDL程序的運(yùn)行窗口,它屬于操作系統(tǒng)本身。我們要打開(kāi)SDL的程序窗口,需要引入一個(gè)新函數(shù):

SDL_Surface *SDL_SetVideoMode(int width, int height, int bitsperpixel, Uint32 flags);
        我們這里僅僅是為了打開(kāi)SDL的程序窗口來(lái)引入這個(gè)函數(shù),只做個(gè)簡(jiǎn)單介紹:1、這個(gè)函數(shù)本身有作用——打開(kāi)SDL程序窗口;2、前三個(gè)參數(shù)分別是這個(gè)打開(kāi)窗口的寬,高和位深,最后那個(gè)flags我們這里只介紹SDL_SWSURFACE,這個(gè)位標(biāo)表示把返回值的數(shù)據(jù)建立在系統(tǒng)內(nèi)存里面。

1.4:一段演示按下ESC(或者點(diǎn)x)退出SDL窗口的程序。
///////////////////
//按下ESC(或者點(diǎn)x)退出SDL窗口
//聯(lián)系我: znln426@163.com
//再別流年的技術(shù)實(shí)驗(yàn)室
//http://m.shnenglu.com/lf426/
///////////////////

#include 
<iostream>
#include 
"SDL/SDL.h"

void pressESCtoQuit();
void doSomeLoopThings();

int main(int argc,char* argv[])
{
    
try {
        
if ( SDL_Init(SDL_INIT_VIDEO == -1 ))
            
throw SDL_GetError();
    }
    
catch ( const char* s ) {
        std::cerr 
<< s << std::endl;
        
return -1;
    }
    atexit(SDL_Quit);

    SDL_SetVideoMode(
64048032, SDL_SWSURFACE);
    std::cout 
<< "Program is running, press ESC to quit.\n";
    pressESCtoQuit();
    std::cout 
<< "GAME OVER" << std::endl;

    
return 0;
}

void pressESCtoQuit()
{
    std::cout 
<< "pressESCtoQuit() function begin\n";
    
bool gameOver = false;
    
while( gameOver == false ){
        SDL_Event gameEvent;
        SDL_PollEvent(
&gameEvent);
        
if ( &gameEvent != 0 ){
            
if ( gameEvent.type == SDL_QUIT ){
                gameOver 
= true;
            }
            
if ( gameEvent.type == SDL_KEYDOWN ){
                
if ( gameEvent.key.keysym.sym == SDLK_ESCAPE ){
                    gameOver 
= true;
                }
            }
        }
        doSomeLoopThings();
    }
    
return;
}

void doSomeLoopThings()
{
    std::cout 
<< ".";
    
return;
}

1.5:兩個(gè)細(xì)節(jié)問(wèn)題。

        我們修改pressESCtoQuit()函數(shù)兩個(gè)小地方:
void pressESCtoQuit()
{
    std::cout 
<< "pressESCtoQuit() function begin\n";
    
bool gameOver = false;
    
while( gameOver == false ){
        SDL_Event gameEvent;
        
while ( SDL_PollEvent(&gameEvent) != 0 ){
            
if ( gameEvent.type == SDL_QUIT ){
                gameOver 
= true;
            }
            
if ( gameEvent.type == SDL_KEYUP ){
                
if ( gameEvent.key.keysym.sym == SDLK_ESCAPE ){
                    gameOver 
= true;
                }
            }
        }
        doSomeLoopThings();
    }
    
return;
}
        我們把引起輪詢機(jī)制的if換成了while。我們前面說(shuō)過(guò),查詢&gameEvent是不是為空,是為了強(qiáng)調(diào)SDL_PollEvent()使用指針參數(shù)傳了值。而事實(shí)上,if是判斷,while不僅僅是判斷,而且還是循環(huán)。但是更換這兩個(gè)關(guān)鍵字似乎并沒(méi)有出現(xiàn)不同,為什么呢?
        我們分析兩種情況下的模型。使用if的函數(shù),實(shí)際上每次循環(huán)只查詢event一次;而使用while的時(shí)候,內(nèi)嵌的while循環(huán)會(huì)一直對(duì)“懸而未解”的事件隊(duì)列(event queue)“彈”(這個(gè)隱喻意味著某個(gè)event一旦被處理,就不再屬于queue的一個(gè)元素)出的頭值進(jìn)行處理,直到事件隊(duì)列為空。這似乎更符合理想的模型。但是實(shí)際上,計(jì)算機(jī)的效率并不是我們假設(shè)的那樣低,event queue在一個(gè)外循環(huán)期間,始終保持兩種狀態(tài):要么為空,要么最多一個(gè)。換句話說(shuō),你不可能在一次gameOver==false的循環(huán)期間,為event queue擠進(jìn)去1個(gè)之上(>1)的event,這就是if與while效果相同的原因。
        我們修改的第二個(gè)細(xì)節(jié)是把SDL_KEYDOWN換成了SDL_KEYUP,這是為了提醒大家,按下某個(gè)鍵和按下某個(gè)鍵再松開(kāi),是兩種不同的event。
posted on 2008-02-04 03:31 lf426 閱讀(8066) 評(píng)論(13)  編輯 收藏 引用 所屬分類: SDL入門(mén)教程

FeedBack:
# re: SDL入門(mén)教程(三):1、如何實(shí)現(xiàn)按下ESC退出程序? 2008-04-16 11:39 WANGYY
請(qǐng)問(wèn)一下,為什么atexit(SDL_Quit)在窗口創(chuàng)建之前啊?那不是把SDL退出了,還創(chuàng)建窗口等這些事情有什么用呢?
我試過(guò),把a(bǔ)texit(SDL_Quit)放在最后退出窗口之后跟樓主那樣是一樣的效果
但就是不明白為什么,請(qǐng)指教,謝謝!  回復(fù)  更多評(píng)論
  
# re: SDL入門(mén)教程(三):1、如何實(shí)現(xiàn)按下ESC退出程序?[未登錄](méi) 2008-04-16 11:57 lf426
atexit()的效果相當(dāng)于在main()終止的時(shí)候執(zhí)行,無(wú)論是正常退出,比如return 0,或者異常退出,比如exit (-1)或者其他異常的情況下,只要main()結(jié)束了,atexit()就會(huì)調(diào)用,放在main()的任何位置理論上都是可以的。
不過(guò)后面的章節(jié)我使用對(duì)象來(lái)管理SDL的裝載與退出了,就用不上atexit()了。  回復(fù)  更多評(píng)論
  
# re: SDL入門(mén)教程(三):1、如何實(shí)現(xiàn)按下ESC退出程序? 2009-03-25 15:03 hello
SDL_Event gameEvent;
SDL_PollEvent(&gameEvent);
if ( &gameEvent != 0 ){
...
}

這里&gameEvent永遠(yuǎn)也不會(huì)為空啊  回復(fù)  更多評(píng)論
  
# re: SDL入門(mén)教程(三):1、如何實(shí)現(xiàn)按下ESC退出程序? 2009-03-26 15:04 LHNing
@hello
應(yīng)該是你調(diào)試的假象吧  回復(fù)  更多評(píng)論
  
# re: SDL入門(mén)教程(三):1、如何實(shí)現(xiàn)按下ESC退出程序?[未登錄](méi) 2009-04-02 11:19 haha
@LHNing

SDL_PollEvent(&gameEvent);

人家hello是說(shuō)

不管你在這個(gè)函數(shù)里做什么, 你也不可能改變gameEvent這個(gè)局部變量的內(nèi)存地址, 即 &gameEvent 是不會(huì)變的!

扯什么什么假象啊....
  回復(fù)  更多評(píng)論
  
# re: SDL入門(mén)教程(三):1、如何實(shí)現(xiàn)按下ESC退出程序? 2009-04-28 11:07 liigo
思路很條理,表達(dá)很清晰  回復(fù)  更多評(píng)論
  
# re: SDL入門(mén)教程(三):1、如何實(shí)現(xiàn)按下ESC退出程序? 2009-06-19 10:22 akira
if ( &gameEvent != 0 )


寫(xiě)出這樣的代碼頁(yè)好意思拿出來(lái)啊?笑  回復(fù)  更多評(píng)論
  
# re: SDL入門(mén)教程(三):1、如何實(shí)現(xiàn)按下ESC退出程序? 2009-07-19 18:23 林某
面向?qū)ο螅++是面向?qū)ο蟮恼Z(yǔ)言,這么寫(xiě)程序不倫不類。  回復(fù)  更多評(píng)論
  
# re: SDL入門(mén)教程(三):1、如何實(shí)現(xiàn)按下ESC退出程序? 2009-08-16 20:07 路過(guò)
SDL_PollEvent(&gameEvent);
if ( &gameEvent != 0 ){

估計(jì)作者的原意是:
if (SDL_PollEvent(&gameEvent) != 0 ){

因?yàn)楹竺娴慕忉屖前凑蘸笳叩?br>估計(jì)作者犯了低級(jí)錯(cuò)誤而已
  回復(fù)  更多評(píng)論
  
# re: SDL入門(mén)教程(三):1、如何實(shí)現(xiàn)按下ESC退出程序?[未登錄](méi) 2009-10-07 09:47 xosen
我們分析兩種情況下的模型。使用if的函數(shù),實(shí)際上每次循環(huán)只查詢event一次;而使用while的時(shí)候,內(nèi)嵌的while循環(huán)會(huì)一直對(duì)“懸而未解”的事件隊(duì)列(event queue)“彈”(這個(gè)隱喻意味著某個(gè)event一旦被處理,就不再屬于queue的一個(gè)元素)出的頭值進(jìn)行處理,直到事件隊(duì)列為空。這似乎更符合理想的模型。但是實(shí)際上,計(jì)算機(jī)的效率并不是我們假設(shè)的那樣低,event queue在一個(gè)外循環(huán)期間,始終保持兩種狀態(tài):要么為空,要么最多一個(gè)。換句話說(shuō),你不可能在一次gameOver==false的循環(huán)期間,為event queue擠進(jìn)去1個(gè)之上(>1)的event,這就是if與while效果相同的原因。

用if和while是完全不一樣的處理方式  回復(fù)  更多評(píng)論
  
# re: SDL入門(mén)教程(三):1、如何實(shí)現(xiàn)按下ESC退出程序? 2009-11-05 21:34 metin9527
沒(méi)錯(cuò),if和while是完全不同的,if可以使后面的doSomeLoopThings()每次循環(huán)得到執(zhí)行,如果使用while poll事件的話,如果事件不斷,后面的doSomeLoopThings()會(huì)得不到執(zhí)行!  回復(fù)  更多評(píng)論
  
# re: SDL入門(mén)教程(三):1、如何實(shí)現(xiàn)按下ESC退出程序? 2013-05-03 15:47 匿名
@akira
這么寫(xiě)沒(méi)錯(cuò),運(yùn)行正常  回復(fù)  更多評(píng)論
  
# re: SDL入門(mén)教程(三):1、如何實(shí)現(xiàn)按下ESC退出程序? 2013-12-16 16:17 許思維
@hello同學(xué)說(shuō)的對(duì),if ( &gameEvent != 0 )永遠(yuǎn)也不會(huì)成立。
樓主@lf426,你的最后一句:
“你不可能在一次gameOver==false的循環(huán)期間,為event queue擠進(jìn)去1個(gè)之上(>1)的event,這就是if與while效果相同的原因。”
你的這句話不正確。也與你倒數(shù)第二句“計(jì)算機(jī)的效率并不是我們假設(shè)的那樣低”有沖突。你這兩句話是不是打錯(cuò)了,請(qǐng)你仔細(xì)檢查?
實(shí)際上,一個(gè)gameOver==false循環(huán)期間,event queue很可能被置入多于一個(gè)event。因?yàn)榫鸵话闱闆r而言,doSomeLoopThings執(zhí)行所需的時(shí)間是未知的,可能比例子中的一個(gè)輸出多的多,event queue必定會(huì)捕捉在此期間的所有事件,當(dāng)然不會(huì)只有1個(gè)。
在doSomeLoopThings中加入延時(shí)(SDL_Delay(1000))即可驗(yàn)證:
void doSomeLoopThings()
{
std::cout << ".";
SDL_Delay(500);
return;
}
// 再對(duì)while(gameOver==false)略作修改:
while( gameOver == false ){
SDL_Event gameEvent;
int ecount = 0;
while ( SDL_PollEvent(&gameEvent) != 0 ){
ecount++;
if ( gameEvent.type == SDL_QUIT ){
gameOver = true;
}
if ( gameEvent.type == SDL_KEYUP ){
if ( gameEvent.key.keysym.sym == SDLK_ESCAPE ){
gameOver = true;
}
}
}
std::cout << "processed " << ecount << " events!\n";
doSomeLoopThings();
}
  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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| 亚洲第一在线综合在线| 亚洲精品乱码久久久久久蜜桃麻豆| 精品91视频| 亚洲激情一区二区| 一本色道精品久久一区二区三区| 亚洲欧洲偷拍精品| 国产免费观看久久黄| 国产性天天综合网| 欧美顶级艳妇交换群宴| 欧美大片在线观看一区| 欧美极品aⅴ影院| 日韩午夜三级在线| 日韩视频永久免费观看| 国产精品99久久不卡二区| 亚洲午夜精品一区二区三区他趣| 亚洲一区二区少妇| 午夜在线一区| 美女精品网站| 国产精品va在线播放| 国产欧美精品在线观看| 欧美成人一区二区三区| 欧美日韩p片| 最新中文字幕一区二区三区| 美日韩精品视频免费看| 欧美成人a∨高清免费观看| 亚洲人精品午夜| 欧美激情一区| 久久久久久网站| 最新热久久免费视频| 久久国产精品免费一区| 欧美日韩国产在线播放| 在线高清一区| 亚洲久久一区| 久久精品国产亚洲精品 | 久久国产欧美精品| 欧美日本一区二区高清播放视频| 国产香蕉久久精品综合网| 99re6这里只有精品| 快射av在线播放一区| 亚洲视频精品在线| 欧美成人激情视频免费观看| 国内精品国语自产拍在线观看| 99精品国产在热久久婷婷| 亚洲中字在线| 亚洲精品中文在线| 欧美成年人在线观看| 亚洲丶国产丶欧美一区二区三区| 销魂美女一区二区三区视频在线| 亚洲精品欧美在线| 欧美电影免费观看| 亚洲免费成人av电影| 亚洲高清在线观看一区| 欧美成人午夜| 99国产精品视频免费观看一公开| 久久夜色精品国产| 欧美一区二区三区免费观看视频| 国产精品久久91| 久久香蕉国产线看观看av| 午夜亚洲性色福利视频| 99亚洲一区二区| 国产精品扒开腿爽爽爽视频| 亚洲成人在线网站| 亚洲在线视频观看| 日韩小视频在线观看专区| 欧美日韩精品| 久久资源av| 99精品黄色片免费大全| 亚洲视频综合| 国产综合香蕉五月婷在线| 久久裸体视频| 久久综合伊人| 一区二区高清| 亚洲欧美日韩中文视频| 亚洲福利小视频| 亚洲精品国产精品乱码不99 | 亚洲欧美日韩国产中文在线| 亚洲一卡久久| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 伊人天天综合| 国产三级欧美三级| aa级大片欧美三级| 欧美激情亚洲激情| 国内在线观看一区二区三区| 日韩视频在线观看一区二区| 国产日韩欧美不卡在线| 中文网丁香综合网| 久久国产成人| 蜜臀久久久99精品久久久久久 | 欧美极品在线视频| 一区二区三区不卡视频在线观看| 一本色道久久综合狠狠躁篇怎么玩 | 欧美一区二区三区男人的天堂| 国产精品高潮呻吟久久av黑人| 亚洲自拍偷拍一区| 久久精品视频一| 亚洲最新在线视频| 欧美亚洲一区| 夜夜嗨av一区二区三区免费区| 一区二区高清视频| 黑丝一区二区三区| 日韩亚洲一区二区| 国产精品三级视频| 欧美成人免费网站| 午夜精品久久久久久久蜜桃app | 久久精品盗摄| 美女精品网站| 久久精品一二三区| 欧美日韩一区二区三区在线看 | 久久久久国产精品一区二区| 日韩一级黄色大片| 亚洲网站啪啪| 国产精品免费一区二区三区在线观看 | 亚洲精品少妇| 亚洲欧美制服另类日韩| 亚洲福利视频网站| 亚洲男人天堂2024| 亚洲国产日韩在线一区模特| 亚洲特级片在线| 亚洲精品久久久久久久久久久久久 | 免费成人毛片| 欧美在线看片a免费观看| 欧美顶级少妇做爰| 免费不卡视频| 国产在线精品自拍| 亚洲欧美中文在线视频| 亚洲免费av片| 欧美成人精品三级在线观看| 99这里只有久久精品视频| 久久蜜桃香蕉精品一区二区三区| 亚洲欧美国产精品va在线观看| 欧美成人午夜| 亚洲国产精品欧美一二99| 在线免费观看成人网| 久久成人18免费网站| 欧美在线免费一级片| 欧美午夜一区| 在线亚洲+欧美+日本专区| 一区二区激情视频| 欧美区视频在线观看| 久久久久一区| 伊人成人网在线看| 免费在线亚洲欧美| 国产专区一区| 久久人体大胆视频| 欧美成人国产一区二区| 欧美激情亚洲精品| 宅男噜噜噜66一区二区66| 亚洲黑丝在线| 亚洲国产视频a| 亚洲视频精品| 国产欧美精品日韩区二区麻豆天美| 亚洲综合色在线| 久久美女性网| 亚洲国产欧美一区| 欧美日韩1区| 国产精品日日摸夜夜摸av| 久久激情网站| 亚洲电影第1页| 亚洲一区亚洲| 国产亚洲精品久久久久婷婷瑜伽| 久久精品伊人| 亚洲激情图片小说视频| 亚洲午夜久久久久久久久电影网| 国产精品久久久久久久久久久久久| 亚洲综合国产激情另类一区| 久久综合久久综合这里只有精品 | 亚洲高清视频在线观看| 亚洲日本成人网| 亚洲一区在线观看视频| 在线日韩成人| 亚洲国产精品一区二区三区| 国产日韩精品入口| 亚洲一区免费视频| 亚洲欧洲日产国产综合网| 中文亚洲欧美| 亚洲精选国产| 久久理论片午夜琪琪电影网| 欧美色另类天堂2015| 亚洲一区二区三区中文字幕在线| 亚洲在线观看视频网站| 永久久久久久| 国产精品美女一区二区| 久久成人国产精品| 亚洲电影在线播放| 免费久久精品视频| 亚洲网站在线| 亚洲素人一区二区| 精品白丝av| 国产精品乱人伦中文|