狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當(dāng)前位置:系統(tǒng)之家 > 技術(shù)開發(fā)教程 > 詳細(xì)頁(yè)面

PHP-GTK 介紹及其應(yīng)用

PHP-GTK 介紹及其應(yīng)用

更新時(shí)間:2024-04-12 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

1. PHP-GTK介紹

1.1 PHP-GTK
PHP-GTK是PHP的延伸模組,它可以讓程式設(shè)計(jì)師寫出在客戶端執(zhí)行的、且獨(dú)立的GUI的程式。這個(gè)模組不允許在瀏覽器上顯視GTK+的程式,它一開始就是開發(fā)來(lái)寫?yīng)毩⒌腉UI程式的。

1.2 GTK
GTK原本是為GIMP,一個(gè)GUI的影像處理軟體而開發(fā)的。GTK+是GIMP的套裝工具。GTK+從這里開始發(fā)展,直到現(xiàn)在已經(jīng)成為Gnome的中心(Gnome是一個(gè)桌面環(huán)境)。後來(lái)GTK+也已經(jīng)被推廣到BeOS和Win32,使得它成為PHP延伸模組的最佳選擇,維持PHP可以跨平臺(tái)并可以用PHP為L(zhǎng)inux,BeOS,Windows等平臺(tái)開發(fā)視窗介面的程式。

2. PHP-GTK概念

2.1 前言
接下來(lái)就要教各位一點(diǎn)點(diǎn)比較觀念性的東西羅┅因?yàn)檫@章的概念都是非常重要的,所以就算不懂,也還是要慢慢的看懂它,不然┅以後就┅。還有,接下來(lái)的內(nèi)容不建議沒(méi)有程式設(shè)計(jì)經(jīng)驗(yàn)的讀者閱讀,因?yàn)橛泻芏嗟挠^念很容易會(huì)搞不清楚。還有,接下來(lái)該用英文的部分我都會(huì)用英文,這樣大家在看國(guó)外文件的時(shí)候才不會(huì)不知所措,加油吧!!如果對(duì)本章有任何不懂之處,請(qǐng)自行查閱
PHP-GTK Manual:http://gtk.php.net/manual/en/

2.2 Widget(s)
Widget是一個(gè)GUI程式中基本的functions和forms。最常用的幾個(gè)Widget是:label、button、window、frame和text box。所有的widget都是來(lái)自於一個(gè)抽象的基本class─GtkWidget。每個(gè)widget都是一個(gè)class

一個(gè)Widget一生大概都有五個(gè)時(shí)期:
1. 建立(Creation):宣告一個(gè)物件(declaring an object)
2. 放置(Placement):將它加入一個(gè)容器中(adding it to a container)
3. 信號(hào)連接(Signal Connection):接收信號(hào)以及進(jìn)行動(dòng)作(the action it will perform)
4. 顯示(Display):它是否是可見(jiàn)的(whether it is viewable or not)
5. 刪除(Destruction):關(guān)閉程式(closing of a program)

2.3 Container(s)
Container是一個(gè)可以包含其他widget的widget。大部分的widget都是container,例如:GtkWindow、GtkTable和GtkBox。除了這點(diǎn)之外,container跟其他的widget沒(méi)兩樣,也可以被放到其他container去。而所有的container都是來(lái)自於一個(gè)class─GtkContainer,本身來(lái)自於GtkWidget的class。所以container也是widget的一種。

2.4 Signal(s)
當(dāng)程式設(shè)計(jì)師在程式中做了一個(gè)動(dòng)作時(shí),程式需要有一個(gè)動(dòng)作來(lái)回應(yīng)使用者的動(dòng)作。Signals使程式可以知道使用者做了動(dòng)作并可以觸發(fā)適合的回應(yīng)。

例如,當(dāng)使用者按了一個(gè)可以開新視窗的按鈕(GtkButton),程式認(rèn)出這個(gè)請(qǐng)求,於是就開了一個(gè)新的視窗。這件事可以經(jīng)由signal來(lái)做到。當(dāng)按鈕按下去之後,會(huì)使widget發(fā)出一個(gè)signal,接著再由該signal觸發(fā)callbacks,產(chǎn)生一個(gè)新的視窗(GtkWindow)。

2.5 Callback(s)
Callback就是當(dāng)signal送出之後,被signal喚起的function。Callback會(huì)執(zhí)行function傳回一個(gè)值或是做一個(gè)動(dòng)作。Callback就是signal的handler funciton。它可以是該signal的預(yù)設(shè)handler或著是程式設(shè)計(jì)師定義的function。要建立一個(gè)callback,就必須把function connect 到 signal。

2.6 Signal Inheritance(繼承)
和methods一樣,signals可以被物件繼承。一個(gè)widget可以送出任何它的parent widget可以送出的還有它自己特有的signal。

2.7 Connecting Signals
你必須為PHP-GTK指定一個(gè)callback function當(dāng)signal送出時(shí)來(lái)對(duì)signal做回應(yīng)。把一個(gè)signal連接到一個(gè)function可以用connect() 這個(gè)object 方法達(dá)成。

如下:

<?php
//建立一個(gè)GtkWindow
$window = &new GtkWindow();
//將"destroy" signal用connect() 方法連接到shutdown函式
$window->connect("destroy", "shutdown");
//建立一個(gè)GtkButton,按鈕文字為"按我"
$button = &new GtkButton("按我");
$button->connect("clicked", "you_clicked");
//把GtkButton放到是container的GtkWindow中
$window->add($button);
//顯示$window以及它的所有child widget
$window->show_all();
//進(jìn)入程式主回圈(即程式啟動(dòng)之意)
gtk::main();
?>


執(zhí)行它的話,就會(huì)出現(xiàn)一個(gè)視窗,里面有一個(gè)寫著"按我"的按鈕,按下按鈕程式就會(huì)執(zhí)行you_clicked函式。在這個(gè)程式中,$window物件的"destroy" signal是在使用者按下視窗右上角的"X"時(shí)會(huì)送出的;而$button物件的"clicked" signal是在使用者按下該按鈕的時(shí)候會(huì)送出的。最後那一行的gtk::main() 是一定要執(zhí)行的,這樣才能告訴電腦要開始執(zhí)行程式,既然有開始執(zhí)行,那就一定有停止吧? 沒(méi)錯(cuò),用gtk::main_quit() 就可以停止程式了。

看完了以上的范例,有些讀者可能會(huì)有疑問(wèn)「如果我想執(zhí)行送出signal的widget之外的widget的method怎么辦?」,這時(shí)候,就要用另一個(gè)method了 a connect_object(),它可以跨物件呼叫方法或是傳遞其他物件做為function的叁數(shù)。跨物件呼叫方法如下:

$window->connect_object("destroy", array("gtk","main_quit"))


如此,在$window物件的"destroy" signal送出的時(shí)候就會(huì)喚起gtk::main_quit()這個(gè)方法,程式就會(huì)終指執(zhí)行。

在介紹連接方法的最後,再提一下connect() 和 connect_object() 的自訂增加要傳給callback function的叁數(shù)的辦法。見(jiàn)例子:
<?php
$parameter="新超人";
$button1 = &new GtkButton("測(cè)試");
//將"clicked" signal連接到who_are_you函式,附加叁數(shù)$parameter
$button1->connect("clicked","who_are_you",$parameter);
$button2 = &new GtkButton("測(cè)試二");
//將"clicked" signal連接到kill_the_button1函式,附加叁數(shù)$button1
$button2->connect_object("clicked","kill_the_button1",$button1);

function who_are_you($widget,$parameter){
echo $parameter;
}

function kill_the_button($button){
$button->destroy();
}
?>


注意那兩個(gè)function,who_are_you有兩個(gè)叁數(shù)對(duì)吧? 第一個(gè)是做什么用的呢?為什么它會(huì)自動(dòng)出現(xiàn)?? 因?yàn)椋總(gè)signal的callback function都會(huì)因?yàn)閟ignal的不同而加上一些內(nèi)定一定會(huì)傳入callback function的叁數(shù),而基本上所有的signal都至少會(huì)傳給callback function一個(gè)叁數(shù)a產(chǎn)生該signal的物件。所以who_are_you的第一個(gè)叁數(shù)就是$button1,而第二個(gè)就是$parameter,也就是新超人。那kill_the_button函式就不一樣羅~ 因?yàn)閏onnect_object()函式會(huì)呼略原本signal的callback function的預(yù)設(shè)叁數(shù),所以kill_the_button就只有附加在connect_object最後的$button1叁數(shù)了,如此,kill_the_button就可以呼叫$button1的方法或是取得它的屬性,這里呼叫了$button1的destroy方法,於是$button1就會(huì)被消滅。

2.8 Event(s)
Event是signal的一種,但是它的用途還有功能都非常強(qiáng)大。就signal來(lái)說(shuō),signal這種東西都是內(nèi)建在widget上的,所以,例如GtkWindow沒(méi)有"clicked"signal,那么在不用event signal的情況下,GtkWindow是決對(duì)不可能送出clicked之類的signal的。那如果用了event signal呢? Event signal是可以允許被加到任何的widget上的,所以就算這個(gè)widget本來(lái)沒(méi)有發(fā)出"clicked"signal的功能,你也可以用add_events() 來(lái)為它加上按了它之後event signal會(huì)做什么樣的反應(yīng)。而event signal中包含的資訊比較多,比如說(shuō)當(dāng)你在使用"key-press-event"這個(gè)event signal的時(shí)候,同時(shí)也會(huì)記錄到你按下的是什么按鍵,於是通常event signal的callback function格式內(nèi)定會(huì)有兩個(gè)叁數(shù),第一個(gè)依然是送出signal的widget,而第二個(gè)就是$event,這個(gè)$event是一個(gè)class,里面的屬性和方法會(huì)因?yàn)樗瓦^(guò)來(lái)的event signal種類而不同。就"key-press-event"傳回的$event class來(lái)說(shuō),里面有一個(gè)屬性是keyval,內(nèi)容就是使用者按的是哪一個(gè)鍵。這些對(duì)於一個(gè)程式設(shè)計(jì)師來(lái)說(shuō)常常是很有用的資訊。所以event的重要性是不可忽視的,就算剛開始會(huì)有點(diǎn)不懂,也要慢慢的融入才行。這一節(jié)也非常重要。

3. 安裝PHP-GTK

3.1 在Windows系統(tǒng)下安裝
首先要從http://gtk.php.net/download.php下載...HP-GTK的windows binary檔案(本文撰寫時(shí)為0.5.1版)。

接著來(lái)看看PHP-GTK 0.5.1 binary檔的內(nèi)容:
php4 → php 和 php-gtk binary 檔案
winnt → 預(yù)設(shè)的php.ini檔案
winntsystem32 → gtk binaries used by extension
test → 幾個(gè)測(cè)試用的檔案
README.txt → 安裝說(shuō)明檔

開始安裝:
1. 復(fù)制 php4 的內(nèi)容到你的php安裝目錄下(例C:php)。
2. 復(fù)制 winnt 的內(nèi)容到你的winnt資料夾。在Windows NT或Windows2000上是C:winnt,在Window95、98、xp上是C:windows。如果該資料夾里已經(jīng)有 php.ini,那就不用做這個(gè)動(dòng)作。
3. 復(fù)制 winntsystem32 的內(nèi)容到你的winntsystem32資料夾。在Windows NT或Windows2000上是C:winntsystem32,在Window95、98、xp上是C:windowssystem32。
4. 復(fù)制 test 的內(nèi)容到你想要執(zhí)行你的script的地方(此步驟非必要)。

如何執(zhí)行PHP-GTK程式:
PHP-GTK程式可以在「開始」-「執(zhí)行」下輸入指令(或是建立捷徑)來(lái)啟動(dòng),如:C:phpphp -q c:phptestgtk.php ## 表示不送印出 HTTP Header,但一直使用這個(gè)視窗,直到關(guān)閉程式。
C:phpphp -q -c php.ini c:gtk.php ## 同上,但執(zhí)行指定的php.ini設(shè)定。
C:phpphp C:phptestgtk.php ## 表示會(huì)送印出 HTTP Header,但一直使
用這個(gè)視窗,直到關(guān)閉程序
C:phpphp_win C:phptestgtk.php ## 表示不使用視窗,執(zhí)行後獨(dú)立一個(gè)執(zhí)行程式,他是使用 php -q模式,但是只要output出任何字元,例如錯(cuò)誤訊息,就會(huì)停止執(zhí)行。

3.2 在UNIX系統(tǒng)下安裝
Debian的使用者可以在 http://www.debian.org 下載PHP-GTK的binary檔。系統(tǒng)需求須已安裝下列package:

PHP 4.1.0 或之後的版本,必須是編為CGI binary(command-line) 版本,包含所有的header files和devlement scripts。

PHP-GTK支援GTK+ v1.2而需要安裝1.2.6以上版本的GTK+。GTK+ v2.0還未被支援,必須等到它開發(fā)完成并且普及了之後才會(huì)被支援。你可以從下面的網(wǎng)址取得GTK+ v1.2.X的最新版本:ftp://ftp.gtk.org/pub/gtk/v1.2/

在將取得的檔案解壓縮或是由CVS中check out出來(lái)之後,切換到該目錄下,開始進(jìn)行安裝(打指令羅~):

取得CVS版本,執(zhí)行
cvs -d server:cvsread@cvs.php.net:/repository co php-gtk
或下載最新版本
http://gtk.php.net/download.php

1. ./buildconf
2. ./configure (想要加裝extensions的話請(qǐng)輸任./configure --help看說(shuō)明)
3. make(如果看到"Could not write┅",只是代表該GTK+ object還沒(méi)被支援,不算是什么錯(cuò)誤訊息)
4. make install

執(zhí)行看看test/資料夾中的范例scripts來(lái)測(cè)試,特別是gtk.php,這些都是展示如何使用的好例子。

4. 第一支程式

4.1 前言
本章會(huì)教導(dǎo)各位一些常用的GtkClass(widget),還有運(yùn)用這些來(lái)做出你的第一支PHP-GTK程式,如果概念那章不是很熟的話,這章可以給你一個(gè)練習(xí)的機(jī)會(huì)喔! 如果對(duì)本章的內(nèi)容有不懂或是想要深入了解其他的widget,可以到http://gtk.php.net/manual/en/ 看手冊(cè),手冊(cè)里面有不少范例程式。

4.2 會(huì)用到的widgets
在開始寫程式之前,先來(lái)對(duì)等一下會(huì)用到的widget class們做一個(gè)overview。

GtkWindow()
GtkWindow()建立一個(gè)視窗,里面有很多方法可以使用,如:set_title,set_name,
connect,set_border_width等┅。

GtkFrame()
GtkFrame()純粹建立一個(gè)好Border,你可以設(shè)定它的label name,alignment,
shadow(用英文,讀Manual的時(shí)候會(huì)比較方便)。

GtkVBox()
GtkVBox()建立一個(gè)直立的container來(lái)放入widgets。

GtkLabel()
GtkLabel()可以建立一個(gè)label,內(nèi)容文字可以建立時(shí)設(shè)定也可以建立後用方法來(lái)設(shè)定,如果沒(méi)有設(shè)定內(nèi)容文字,將會(huì)建立一個(gè)空的label(這是廢話嗎┅?)。

GtkHSeparator()
GtkHseparator()建立一個(gè)水平線。

GtkEntry()
GtkEntry()建立一個(gè)textbox供使用者輸入資訊。

GtkHButtonBox()
GtkHButtonBox()建立一個(gè)以水平方式排列Button的container。

GktBtton()
GtkButton()或許可以說(shuō)是GUI程式中最常用的widget了,它建立一個(gè)可以讓使用者按的按鈕。

4.3 開始

If(!class_exist("gtk"))
{
dl("php_gtk.".(strstr(PHP_OS,"WIN") ? "dll" : "so"));
}


這段程式碼會(huì)判斷PHP-GTK延伸模組是否已啟動(dòng),如果沒(méi)有,它就會(huì)讀取適當(dāng)?shù)臋n案。在上面的范例中,是靠判斷執(zhí)行的作業(yè)系統(tǒng)是Windows還是其它來(lái)判斷要載入php_gtk.dll還是php_gtk.so。


Function delete_event()
{
return false;
}


這里建立了一個(gè)名為delete_event的function,這個(gè)function是等會(huì)兒delete-event signal發(fā)出時(shí)的callback function。內(nèi)容傳回false會(huì)告訴PHP-GTK用預(yù)設(shè)的signal handler來(lái)處理,而預(yù)設(shè)的handler會(huì)關(guān)閉視窗(同時(shí)會(huì)呼叫該視窗的destroy() 函式),在這里,它會(huì)關(guān)閉程式(因?yàn)檫@個(gè)范例程式只有一個(gè)主視窗,一旦關(guān)閉就會(huì)關(guān)閉程式)。

Function destroy()
{
Gtk::main_quit();
}


這里建立了一個(gè)函式,destroy()。在這個(gè)程式中,這個(gè)函式是很重要的,因?yàn)槲覀冊(cè)陉P(guān)閉程式的時(shí)候會(huì)連接到它。之前說(shuō)過(guò),Gtk::main_quit()會(huì)關(guān)閉程式,如果我們?cè)谶@個(gè)程式中沒(méi)有定義這個(gè)function或是這個(gè)function里面沒(méi)有Gtk::main_quit()這行,那么這個(gè)程式就不會(huì)關(guān)閉了。以上一段程式碼說(shuō)明里提到的delete-event來(lái)說(shuō),return false之後預(yù)設(shè)會(huì)執(zhí)行關(guān)閉視窗的動(dòng)作,還會(huì)呼叫destroy()函式,如果這里沒(méi)有定義或是沒(méi)有Gtk::main_quit()這段的話,主視窗的確會(huì)關(guān)閉,可是程式并不會(huì)結(jié)束,因?yàn)橹鞒淌交厝Gtk::main()還在跑。

<?php
$window = &new GtkWindow();
//設(shè)定名字以辨別各個(gè)視窗
$window->set_name('main window');
//設(shè)定視窗的標(biāo)題
$window->set_title('對(duì)PHP-GTK的介紹');
//設(shè)定視窗的大小
$window->set_usize(160, 120);
//呼叫destroy()函式來(lái)結(jié)束程式
$window->connect('destroy', 'destroy');
//呼叫delete_event()函式來(lái)關(guān)閉視窗
$window->connect('delete-event', 'delete_event');
//設(shè)定視窗的邊框?qū)挾?br>$window->set_border_width(10);
//設(shè)定視窗的位置
$window->set_position(GTK_WIN_POS_CENTER);
//顯示視窗和所有child widget (不顯示就看不到)
//最後這兩行一定要放在程式碼的最後,否則什么都看不到
$window->show_all();
Gtk::main();
?>


執(zhí)行程式可以看到如下的圖:





//建立一個(gè)GtkFrame
$frame = &new GtkFrame('經(jīng)過(guò)簡(jiǎn)易修改的程式');
//把GtkFrame放到GtkWindow里
$window->add($frame);
//最下面兩行不要?jiǎng)?br>

結(jié)果如下圖:





下面這段建立一個(gè)GtkVBox作為container,并把GtkEntry、GtkHSeperator、GtkLabel和GtkButtonBox都pack進(jìn)去,所謂pack,是GtkBox底下的container們特別加入的放入widget的方法,就類似於add(),而pack用的方法一般是pack_start()和pack_end(),比add()好的地方是可以控制將widget增加進(jìn)去之後widget的位置(不過(guò)只要是container就會(huì)有add()方法),欲查詢?cè)敿?xì)資料請(qǐng)至
http://gtk.php.net/manual/en。


//建立一個(gè)GtkVBox,為常用的container
$box1 = &new GtkVBox();
//把GtkVBox放到GtkFrame里面
$frame->add($box1);
//建立一個(gè)GtkLabel并將它pack到GtkVBox里
$label = &new GtkLabel();
$box1->pack_start($label);
//建立一個(gè)GtkHSeparator并將它pack到GtkVBox里
$separator = &new GtkHSeparator();
$box1->pack_start($separator);
//建立一個(gè)GtkEntry并將它pack到GtkVBox里
$entry = &new GtkEntry();
$box1->pack_start($entry);
//建立一個(gè)GtkButtonBox并將它add到GtkVBox里
//因?yàn)镚tkButtonBox也是一個(gè)無(wú)形的container,位置不重要,所以用add()
$box2 = &new GtkHButtonBox();
$box1->add($box2);



執(zhí)行如下圖:





最後這段程式碼會(huì)建立兩個(gè)GtkButton并pack到GtkButtonBox里去,還有為兩個(gè)按鈕加上連接,使它們起作用,并建立一個(gè)函式,只要按下GtkButton就會(huì)將GtkLabel的內(nèi)容換成GtkEntry中的文字。

$button = &new GtkButton('顯示輸入的字');
//連接"clicked" signal到set_name()函式,附加$label和$entry兩個(gè)widget
$button->connect_object('clicked','set_name',$label,$entry);
$box2->pack_start($button);
$button = &new GtkButton('離開程式');
//連接"clicked" signal到destroy()函式,將會(huì)關(guān)閉程式
$button->connect('clicked','destroy');
$box2->pack_start($button);

function set_name($label,$entry)
{
//用GtkEntry的get_text()方法從取得文字方塊內(nèi)容
$gettext=$entry->get_text();
//用GtkLabel的set_text()方法設(shè)定新的文字
$label->set_text($gettext);
}
//最後再提一下那兩行┅.
$window->show_all();
Gtk::main();


寫到這裡,整個(gè)程式就算是完成了,來(lái)看看執(zhí)行的結(jié)果吧~






5. 其它

5.1 進(jìn)一步學(xué)習(xí)
如果在結(jié)束了上面的課程之后你還想要更了解PHP-GTK,或是對(duì)于本文的內(nèi)容有任何
不明白的地方,這里提供你幾個(gè)地方可以查詢資料:

PHP-GTK官方網(wǎng)站(En): http://gtk.php.net
GTK官方網(wǎng)站(En): http://www.gtk.org
PHP-GTK官方網(wǎng)站上的Manual(En): http://gtk.php.net/manual/en
TIM官方網(wǎng)站(zh-Tw): http://tim.jerry.com.tw

5.2 另一個(gè)范例
這里有一個(gè)筆者寫的猜數(shù)字游戲,算是比較進(jìn)階的范例,可以抓回去研究看看。
http://pc035860.infor.org/download/GuessNumber.zip

5.3 參考數(shù)據(jù)
本文主要是參考PHP-GTK官方Manual和Zend網(wǎng)站上的Tutorial而編撰成的:
http://gtk.php.net/manual/en
http://www.zend.com/zend/tut/tutorial-silva.php

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
欧美亚洲丝袜传媒另类| 亚洲成人福利片| 欧美一区二区三区视频| 精品视频全国免费看| 91成人免费网站| 色婷婷综合久色| 色菇凉天天综合网| 色婷婷久久久久swag精品 | 亚洲国产精品久久久久婷婷老年| 99国产精品久久久久久久久久久| 99天天综合性| 欧美日本在线| 99av国产精品欲麻豆| 亚洲一区二区在| 久久亚洲一区| 欧美嫩在线观看| 日韩欧美国产综合| 久久久久久97三级| 国产精品国产a| 亚洲综合丁香婷婷六月香| 亚洲大型综合色站| 久久国内精品自在自线400部| 国产一区二区三区国产| 福利电影一区二区三区| 91丝袜呻吟高潮美腿白嫩在线观看| 色综合天天在线| 国产精品久久久免费 | 亚洲第一在线综合网站| 久久www免费人成看片高清| 国产精品一级片在线观看| 粉嫩av一区二区三区在线播放| 99久久精品免费看| 99视频日韩| 欧美亚洲国产bt| 精品福利一区二区三区| 亚洲免费大片在线观看| 日韩国产欧美在线观看| 成人综合在线观看| 1024亚洲| 日韩情涩欧美日韩视频| 亚洲免费观看高清在线观看| 免费不卡在线视频| 91影院在线观看| 欧美亚洲一区| 精品久久久久香蕉网| 一区二区三区自拍| 激情图区综合网| 狠狠色综合网| 欧美日韩高清在线播放| 国产精品另类一区| 视频在线观看国产精品| 91原创在线视频| 色国产精品一区在线观看| 国产亚洲精品中文字幕| 日韩精品国产精品| 午夜久久tv| 欧美日韩视频在线一区二区| 国产精品久久久久天堂| 国产精品一区二区免费不卡 | 精品电影一区二区| 亚洲电影在线免费观看| 99re成人精品视频| 欧洲一区二区三区在线| 国产精品久久久久四虎| 国模娜娜一区二区三区| 国产精品普通话对白| 久久婷婷久久一区二区三区| 日韩电影一二三区| 伊人久久大香线蕉av超碰演员| 91精品欧美福利在线观看| 亚洲尤物视频在线| 欧美777四色影| 欧美一区三区二区| 免费国产亚洲视频| 日韩图片一区| 国产精品拍天天在线| 国产成人综合自拍| 欧美丝袜自拍制服另类| 亚洲综合激情另类小说区| 欧美黄在线观看| 日韩精品中文字幕在线一区| 美女在线观看视频一区二区| 亚洲一区二区三区高清| 国产精品久久久久9999吃药| 99在线视频精品| 日韩一区二区免费视频| 精品一区二区三区免费观看| 久久久人人人| 亚洲成人黄色小说| 国产乱人伦精品一区二区| 一区在线中文字幕| 欧美二区不卡| 久久精品亚洲乱码伦伦中文| 成人性生交大片免费看中文| 欧美高清hd18日本| 久久国产免费看| 日本高清无吗v一区| 亚洲国产精品自拍| 亚洲一区二区三区在线观看视频| 亚洲免费资源在线播放| 亚洲区第一页| 亚洲欧美日韩在线| 一本久道久久综合婷婷鲸鱼| 亚洲欧美经典视频| 国产亚洲一级| 午夜日韩在线观看| 一本色道久久综合亚洲aⅴ蜜桃 | 国产一区二区三区综合| 欧美精品日韩一本| 粉嫩在线一区二区三区视频| 日韩一区二区免费视频| 成人精品高清在线| 久久精品亚洲精品国产欧美kt∨ | 一区二区三区四区五区视频| 一区二区三区日韩欧美| 六月天综合网| 精品一区二区成人精品| 日韩欧美在线综合网| 91网站最新网址| 中文字幕一区二区在线观看| 国产精品久久亚洲7777| 亚洲成人av电影| 欧美日韩极品在线观看一区| 国产成人av资源| 国产性色一区二区| 亚洲精品一区二| 日韩高清一区在线| 日韩一区二区电影网| 欧美日本国产精品| 亚洲第一搞黄网站| 欧美色视频在线观看| 91网站在线观看视频| 亚洲女厕所小便bbb| 欧美性做爰猛烈叫床潮| 高清beeg欧美| 亚洲欧洲中文日韩久久av乱码| 噜噜噜久久亚洲精品国产品小说| 国精品**一区二区三区在线蜜桃| 久久综合精品国产一区二区三区| 在线播放不卡| 久久成人18免费观看| 久久婷婷久久一区二区三区| 国产精品免费区二区三区观看| 国产麻豆精品在线| 亚洲欧美自拍偷拍| 欧美三级电影精品| 国内精品久久久久国产盗摄免费观看完整版 | 91蜜桃传媒精品久久久一区二区| 国产欧美日韩亚州综合 | 精品久久久久久久久久久久久久久久久 | 在线日本成人| 久久国产日韩欧美精品| 国产精品视频九色porn| 91福利精品视频| 色综合久久中文字幕综合网 | 成人性视频网站| 午夜亚洲国产au精品一区二区| 日韩免费在线观看| 欧美一进一出视频| 欧美激情91| 国产在线精品免费av| 亚洲日本在线a| 欧美草草影院在线视频| 免费在线成人av| 欧美在线三区| 紧缚奴在线一区二区三区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美亚男人的天堂| 一本不卡影院| 你懂的国产精品| 国产一区二区不卡老阿姨| 尤物在线观看一区| 国产色爱av资源综合区| 欧美久久免费观看| 亚洲免费综合| 亚洲精品字幕| 午夜精品影院| 播五月开心婷婷综合| 久久福利资源站| 午夜欧美视频在线观看| 中文字幕欧美一| 国产网红主播福利一区二区| 日韩一区二区在线观看| 色素色在线综合| 久久国产主播精品| 亚洲激情一区| 国产综合精品一区| 91免费看`日韩一区二区| 国产麻豆视频精品| 美国av一区二区| 免播放器亚洲一区| 午夜久久久久久久久久一区二区| 亚洲日本欧美天堂| 国产欧美日韩卡一| wwww国产精品欧美| 精品欧美乱码久久久久久1区2区| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲制服少妇| 男人的天堂成人在线| 免费视频久久|