欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

Flash處理外部XML文檔數據_Flash教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:FLASH網游通過XMLSocket與VB后臺通信
前段時間用Flash做了個網游的Demo,通訊用的是Socket。曾承諾寫個教程,現在有空就把它寫寫吧。先從FLASH說起。我要達到的效果是點擊地面,人物就走到點擊的地

預備:

首先你得有臺電腦.其次是要裝上Windows系統和Flash8.

XML基礎:

既然是處理XML文檔.就要先來了解下XML文檔.下面是我所了解的,有些是在Flash中用不到的.
XML擴展標記語言(Extensible Markup Language)是SGML(Structured Generalized Markup Language)的子集.
XML是由World Wide Web Consortium(W3C)的XML工作組定義的.

下面開始了解XML的結構:

XML是由序言和文檔元素組成的.

序言包括:

  1. 聲明(declaration),文檔的第一行,它說明這是一個XML文檔. [可選]
  2. 注釋,增強文檔的可讀性. [可選]
  3. 文檔類型聲明(document type declaration),XML文檔類型定義必須在XML聲明之后,文檔元素之前,中間可以插入XML處理指令,它說明文檔的類型和結構. [可選]
  4. 處理指令(processing instruction),在XML聲明之后,處理XML信息的指令. [可選]
    注:文檔類型聲明(document type declaration)需要用到xml詞匯表.假如想了解具體信息請訪問http://www.w3c.org.

文檔元素:

元素說明了文檔的邏輯結構,元素包函起始標簽,元素內容,元素屬性和結束標簽.一個xml文檔必須有一個頂層元素,所有的元素都嵌套在這個頂層元素中.文檔元素名,屬性名全部都是自定義的.

說明:

先看代碼:

<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<!--xml注釋-->
<!DOCTYPE ChooseFlash>
<!--<!DOCTYPE 類型 SYSTEM "一個dtd文件的地址" >沒有地址或地址錯誤都會出錯,SYSTEM 一個要害字-->
<?xml-stylesheet type="text/css" href="處理xml文檔信息的css.css"?>
<元素>
<子元素 屬性="子元素">信息</子元素>
</元素>

上面是一個加了文檔類型聲明,處理指令的簡單xml文檔.下面一一解釋.

<?xml version="1.0" encoding="gb2312"?>

這句是xml的聲明信息.version是版本號,encoding是字符編碼,假如有中文就需要用gb2312編碼,standalone屬性可以取yes和no,屬性值yes,說明文檔沒有外部聲明.屬性值no,說明文檔有外部聲明.

<!--xml注釋-->

這句是xml的注釋.

<!DOCTYPE ChooseFlash>

這句是文檔類型聲明,DOCTYPE標記是聲明類型用的.ChooseFlash是類型.這里的類型是指xml中的詞匯表.

<?xml-stylesheet type="text/css" href="處理xml文檔信息的css.css"?>

這句是處理指令,xml-stylesheet是一個處理指令,type是類型,href是地址.這個處理指令把CSS鏈接到XML文檔.跟html中應用css差不多一樣.

<元素>
<子元素 屬性="子元素">信息</子元素>
</元素>

這個是文檔元素(Flash用節點表示).<元素>是頂層元素,<子元素>是嵌套在頂層元素中的元素,"屬性"是一個屬性,"信息"是字符串.
也可以這樣寫: <子元素 屬性="子元素" 信息="信息" />
假如用了文檔類型聲明,頂層元素命名最好跟聲明的類型一至.否則會出錯(要有詞匯表時,像這個ChooseFlash這不會出錯,因為沒有這個詞匯表.)

下面是一個完整xml文檔:

<?xml version="1.0" encoding="gb2312"?>
<!--firstNode是一個頂層元素-->
<firstNode>
<!--childNode是一個嵌套在頂層元素firstNode中的子級元素,有一個nodeName的屬性-->
<childNode nodeName="childNode">childNode</childNode>
</firstNode>

好,xml方面就到這里.--假如有錯,請指教.假如想了解具體信息的請訪問:http://www.w3c.org.

下面就是怎么在Flash中調用XML文檔和處理XML中的數據.

Flash方面:

在Flash中調用xml文檔需要用到XML類和XMLNode類中的一些方法和屬性.這里我們就不需要用到那么多.把用到的方法和屬性列出來:

XML類:

  • XML.ignoreWhite;//處理xml文檔中的空白,設為true時,忽略空白,默認值為false.
  • XML.load("xml文檔的地址");//加載指定的xml文檔.
  • XML.onLoad=function(success:Boolean){};//成功加載了xml文檔時調用.
  • XML構造函數.

XMLNode類:

  • XMLNode.attributes;//用來指定xml文檔對象節點的屬性.
  • XMLNode.childNodes;//返回指定xml文檔對象的子級的數組.
  • XMLNode.firstChild;//引用父級節點的子級列表中的第一個子級.
  • XMLNode.nodeValue;//返回XML對象的節點值.
  • XMLNode.nodeName;//XML 對象的節點名稱

開始實驗:

首先說明:
在xml聲明處加上encoding="gb2312".使用gb2312編碼.;
Flash中假如有中文需要在加載代碼前面加上System.useCodepage = true;
使用系統編碼.防止亂碼.

實驗1:

一個簡單的實驗.把xml文檔中的節點在Flash輸出來.
新建一個xml文檔.在記事本輸入下面的代碼.保存為 xml-001.xml ;

<?xml version="1.0"?>
<!--xml-001.xml-->
<firstNode name="1">
<childNode name="1.1" />
<childNode name="1.2" />
<childNode name="1.3" />
</firstNode>

上面是一個簡單的xml文檔.結構是一個頂層節點中嵌套三個子級節點.現在在Flash中如何讀出來呢?

來看操作:

打開Flash,新建一個Flash文檔,保存到剛才的xml文檔中的目錄中,命名 xml-001.fla ;
在第一幀輸入下面代碼:

//xml-001.fla.
//實例化一個xml對象.
var myxml:XML = new XML();
//分析時忽略xml文檔中的空格.
myxml.ignoreWhite = true;
//加載xml-001.xml文檔.
myxml.load("xml-001.xml");
//調用XML.onLoad事件.
myxml.onLoad = function(success:Boolean)
{
//假如加載成功,success=true;否則success=false;
if (success) {
trace("加載成功!");
//輸出頂層節點的節點名和頂層節點中屬性name的值.
trace(myxml.firstChild.nodeName ":" myxml.firstChild.attributes.name);
//用一個數組來引用頂層節點中子級節點的數組.
var child_arr:Array = myxml.firstChild.childNodes;
//用嵌套for語句遍歷出xml文檔中的所有數據.
//這個for遍歷的是頂層節點下的子級節點.
for (var i = 0; i<child_arr.length; i ) {
//輸出頂層節點下的子級節點的節點名和頂層節點下的子級節點中屬性name的值.
trace(child_arr[i].nodeName ":" child_arr[i].attributes.name);
}
} else {
trace("加載失敗!");
}
};

實驗2:

現在做的是把一個多層嵌套節點的xml文檔在Flash中輸出來.
新建一個xml文檔.在記事本中輸入下面的代碼.然后保存為 xml-002.xml

<?xml version="1.0"?>
<!--xml-002.xml-->
<firstNode name="1">
<childNode name="1.1">
<Node name="1.1.1" />
<Node name="1.1.2" />
<Node name="1.1.3" />
</childNode>
<childNode name="1.2">
<Node name="1.2.1" />
<Node name="1.2.2" />
<Node name="1.2.3" />
</childNode>
<childNode name="1.3">
<Node name="1.3.1" />
<Node name="1.3.2" />
<Node name="1.3.3" />
</childNode>
</firstNode>

上面是一個多層嵌套節點的xml文檔.結構是一個頂層節點中,嵌套3個子級節點,3個子級節點分別嵌套3個子級節點.現在又應該怎樣在Flash中讀出來呢?其實原理跟上面一樣.在for中嵌套一個for就可以了.

打開Flash新建一個Flash文檔,保存到剛才的xml文檔的目錄中,命名為 xml-02.fla
在第一幀中輸入以下代碼:

//xml-002.fla.
//實例化一個xml對象.
var myxml:XML = new XML();
//分析時忽略xml文檔中的空格.
myxml.ignoreWhite = true;
//加載xml-002.xml文檔.
myxml.load("xml-002.xml");
//調用XML.onLoad事件.
myxml.onLoad = function(success:Boolean)
{
//假如加載成功,success=true;否則success=false;
if (success) {
trace("加載成功!");
//輸出頂層節點的節點名和頂層節點中屬性name的值.
trace(myxml.firstChild.nodeName ":" myxml.firstChild.attributes.name);
//用一個數組來引用頂層節點中子級節點的數組.
var child_arr:Array = myxml.firstChild.childNodes;
//用嵌套for語句遍歷出xml文檔中的所有數據.
//這個for遍歷的是頂層節點下的子級節點.
for (var i = 0; i<child_arr.length; i ) {
//輸出頂層節點下的子級節點的節點名和頂層節點下的子級節點中屬性name的值.
trace(child_arr[i].nodeName ":" child_arr[i].attributes.name);
//這個for遍歷的是頂層節點下的子級節點下的子級節點.
for (var j = 0; j<child_arr[i].childNodes.length; j ) {
//輸出頂層節點下的子級節點下的子級節點的節點名 和 頂層節點下的子級節點下的子級節點中屬性name的值.不要暈.看看輸出面板就會明白它們之間的關系了哦.
trace(child_arr[i].childNodes[j].nodeName ":" child_arr[i].childNodes[j].attributes.name);
}
}
} else {
trace("加載失敗!");
}
};

實驗3:

利用xml文檔數據做用戶登錄.
新建一個xml文檔.在記事本中輸入下面的代碼.然后保存為 xml-003.xml

<?xml version="1.0" encoding="gb2312"?>
<!--xml-003.xml-->
<UserDataList>
<manager Post="經理">
<UserData username="MChooseFlash01" password="MChooseHappiness" />
<UserData username="MChooseFlash02" password="MChooseHappiness" />
</manager>
<Employee Post="職員">
<UserData username="EChooseFlash01" password="EChooseHappiness" />
<UserData username="EChooseFlash02" password="EChooseHappiness" />
</Employee>
</UserDataList>

首先分析下結構:

<UserDataList>是頂層節點.
<manager Post="經理">是頂層節點下的子級節點.Post是manager節點的屬性.
<Employee Post="職員">是頂層節點下的子級節點.Post是Employee節點的屬性.
<UserData username="MChooseFlash01" password="MChooseHappiness" /> 是頂層節點下的子級節點下的子級節點.username和password是UserData節點的屬性.

這次也需要用到嵌套for.

  • 打開Flash新建一個Flash文檔,大小為300*100,保存到剛才的xml文檔的目錄中,命名為 xml-03.fla
  • 新建3個圖層分別命名Actions , cont , bg .
  • bg層在第一幀畫三個文本框大小的虛線框.
  • cont層在第一幀拉二個輸入文本框,實例名分別為username_txt和password_txt,再拉一個動態文本框,實例名為status_txt.將這三個文本框對齊須虛線框.再點窗口->公用庫->按鈕.拉一個按鈕出來.實例名為login_btn.

如圖:

Flash處理外部XML文檔數據

Actions層在第一幀中輸入以下代碼:

//xml-003.fla.
//使用系統編碼.防止亂碼.
System.useCodepage = true;
//實例化一個xml對象.
var myxml:XML = new XML();
//分析時忽略xml文檔中的空格.
myxml.ignoreWhite = true;
//加載xml-002.xml文檔.
myxml.load("xml-003.xml");
//調用XML.onLoad事件.
myxml.onLoad = function(success:Boolean)
{
//假如加載成功,success=true;否則success=false;
if (success) {
trace("加載成功!");
login_btn.onRelease = function()
{
//用一個數組來引用頂層節點中子級節點的數組.
var child_arr:Array = myxml.firstChild.childNodes;
//用UserData指定xml文檔節點的attributes對象.
var UserData:Object;
//這個for遍歷的是頂層節點下的子級節點.
for (var i = 0; i<child_arr.length; i ) {
//這個for遍歷的是頂層節點下的子級節點下的子級節點.
for (var j = 0; j<child_arr[i].childNodes.length; j ) {
//用UserData指定child_arr[i].childNodes[j].attributes對象
UserData = child_arr[i].childNodes[j].attributes;
//判定用戶名和密碼.
//這里的UserData.username其實就是child_arr[i].childNodes[j].attributes.username的簡寫.UserData.password同理.
//username和password是xml文檔節點中的屬性.因為xml和Flash區分大小寫.所以在輸入時要注重大小寫.
if ((username_txt.text == UserData.username) && (password_txt.text == UserData.password)) {
//Post這個是頂層節點下子級節點的Post屬性.
status_txt.text = child_arr[i].attributes.Post ":" UserData.username "登錄成功";
//假如用戶名和密碼正確就退出for.這個重要.假如不用這個,就會一直重復判定用戶名和密碼.直到將xml文檔節點遍歷完.那樣就不是我們想要的.所以一有正確的就退出for;
return;
} else {
status_txt.text = "用戶名或密碼錯誤";
}
}
}
};
} else {
trace("加載失敗!");
}
};

實例4:

利用List組件做個mp3播放列表.
新建一個xml文檔.在記事本中輸入下面的代碼.然后保存為 xml-004.xml

<?xml version="1.0" encoding="gb2312"?>
<mp3List>
<mp3 path="jmzcg.mp3">啊桑-寂寞在唱歌</mp3>
<mp3 path="jmjywsls.mp3">寂寞是因為思念誰</mp3>
<mp3 path="szwspdxd.mp3">老狼-睡在我上鋪的兄弟</mp3>
<mp3 path="qf.mp3">誓言-求佛</mp3>
<mp3 path="xyzth.mp3">下一站天后</mp3>
<mp3 path="nswdxfm.mp3">伊能靜-你是我的幸福嗎</mp3>
<mp3 path="aqfx.mp3">愛情復興(容祖兒)</mp3>
<mp3 path="qrlg.mp3">水木年華-秋日戀歌</mp3>
<mp3 path="qnyh.mp3">張國榮-倩女幽魂</mp3>
<mp3 path="a.mp3">皇綴馨艫撓⑽母?酒吧里常放)</mp3>
</mp3List>

xml結構:
<mp3List>xml文檔中的頂層節點.
<mp3 path="jmzcg.mp3">啊桑-寂寞在唱歌</mp3>頂層節點下的子級節點.path是mp3節點下的屬性."啊桑-寂寞在唱歌"是mp3的節點值.

  • 打開Flash新建一個Flash文檔,大小為200*150,保存到剛才的xml文檔的目錄中,命名為 xml-04.fla
  • 新建2個圖層分別命名Actions , cont .
  • cont層中拉一個List組件到第一幀.大小為200*150,實例名為mp3_list.
  • Actions層第一幀輸入下面代碼:

//xml-004.fla.
//使用系統編碼.防止亂碼.
System.useCodepage = true;
//實例化一個xml對象.
var myxml:XML = new XML();
//分析時忽略xml文檔中的空格.
myxml.ignoreWhite = true;
//加載xml-004.xml文檔.
myxml.load("xml-004.xml");
//調用XML.onLoad事件.
myxml.onLoad = function(success:Boolean)
{
//假如加載成功,success=true;否則success=false;
if (success) {
trace("加載成功!");
//用一個數組來引用頂層節點中子級節點的數組.
var child_arr:Array = myxml.firstChild.childNodes;
//這個for遍歷的是頂層節點下的子級節點.
for (var i = 0; i<child_arr.length; i ) {
//將歌曲添加到List組件中.
//child_arr[i].firstChild.nodeValue這個是xml節點的節點值.
//child_arr[i].attributes.path這個是xml節點下的path屬性.
mp3_list.addItem({label:(i 1) "." child_arr[i].firstChild.nodeValue, data:child_arr[i].attributes.path});
}
} else {
trace("加載失敗!");
}
};
//listEvent函數是執行List組件中change事件
function listEvent():Void
{
//這個就是歌曲地址.用Sound類的loadSound方法就可以播放歌曲了.例:mysound.loadSound(mp3_list.selectedItem.data);具體請看幫助文檔.
trace(mp3_list.selectedItem.data);
}
//添加幀聽器.
mp3_list.addEventListener("change", listEvent);

ASP

ASP生成XML文檔.常用的是利用ASP將數據庫中的數據用XML文檔格式顯示.方便Flash調用或應用在其它方面.
ASP基礎這里就不做說明了,不過會盡量讓大家都明白(不明白的請提問).

說明:

因為是訪問ASP,需要通過IIS,Flash默認是訪問本地文件的.不能訪問網絡.所以要將訪問本地改成訪問網絡.
在 文件-->發布設置-->Flash 選項卡的最下面的"本地回放安全性"選項中的"只訪問本地文件"改成 "只訪問網絡",
下面發布的Flash,如沒非凡說明,都按此設置.

實驗5:

先做一個簡單的實驗.用ASP生成XML文檔.
打開記事本,輸入下面的代碼,然后保存為 xml-005.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
'xml-005.asp
'設置文檔類型
Response.ContentType="text/xml"
'輸出XML文檔,用一個Response.Write()就可以做到的.這樣寫便于大家理解.
Response.Write("<?xml version='1.0'?>")
Response.Write("<!--xml-005.asp-->")
Response.Write("<firstNode name='1'>")
Response.Write("<childNode name='1.1' />")
Response.Write("<childNode name='1.2' />")
Response.Write("<childNode name='1.3' />")
Response.Write("</firstNode>")
%>

打開IIS新建一個網站,別名xml,路徑為剛才的asp文件的目錄.
然后在IIS中瀏覽剛才的asp文件,看到的就是一個xml文檔,不同的就是后綴名,寫法.
那現在怎樣在Flash中調用呢?
很簡單.打開之前的 xml-001.fla 文件,
將加載xml的地址改成 xml-005.asp 文件的地址就行了.
例:

myxml.load("http://localhost/xml/xml-005.asp");

但這樣還不行.還要加上個隨機數,防止調用緩存.改成下面這樣.

myxml.load("http://localhost/xml/xml-005.asp?ran=" Math.random(9999));

這個效果跟之前做的xml-001.fla效果是一樣的.只是xml文檔換成asp生成的了.

實驗6:

這個實驗跟上面的差不多.但數據是從數據庫中調出來的.這樣做就能很方便的更新數據了.

數據庫:

打開Access數據庫,新建一個空白數據庫,命名為 Data.mdb,保存到之前asp文件的目錄中.
再點 使用設計器創建表,新建二個表,表名分別為:
--------------------------------------------------
first
child
--------------------------------------------------

first表中:
輸入二個字段,分別為:
--------------------------------------------------
firstID 自動編號
name 文本
--------------------------------------------------
在 firstID 字段點右鍵-->主鍵,保存,
打開first表.在name字段輸入一條數據,數據為:
--------------------------------------------------
1
--------------------------------------------------
保存.

child表中:
輸入二個字段,分別為:
--------------------------------------------------
childID 自動編號
name 文本
--------------------------------------------------
在 childID 字段點右鍵-->主鍵,保存.
打開child表.在name字段輸入三條數據,數據分別為:
--------------------------------------------------
1.1
1.2
1.3
--------------------------------------------------
保存.關閉數據庫.

數據庫到這可以了.下面是ASP:
打開記事本,輸入下面的代碼,然后保存為 xml-006.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
'xml-006.asp
dim conn,rs,sqlcom
'設置文檔類型
Response.ContentType="text/xml"
Response.Write("<?xml version='1.0'?>")
Response.Write("<!--xml-006.asp-->")
'創建連接對象
Set conn=Server.CreateObject("Adodb.Connection")
'這里用字符串方法連接數據庫.
'"Provider=Microsoft.Jet.OLEDB.4.0; 這個是數據庫驅動.
'Data Source="Server.MapPath("Data.mdb") 數據庫文件的相對路徑.
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("Data.mdb")
'創建記錄集對象.
Set rs=Server.CreateObject("Adodb.RecordSet")
'查詢數據庫的sql語句.因為 first 是SQL中的要害字,所以要用中括號括起來.
sqlcom="select * from [first]"
'執行sql語句.
'1,1 只讀.
'1,3 可讀可寫.
rs.Open sqlcom,conn,1,1
'假如記錄集中有數據.
if not rs.eof then
'輸出XML節點,rs("name")是first表中字段name的數據.
Response.Write("<firstNode name='"&rs("name")&"'>")
end if
'關閉記錄集
rs.Close
'查詢數據庫的sql語句.
sqlcom="select * from child"
'執行sql語句.
rs.Open sqlcom,conn,1,1
'用for語句將數據庫中的數據循環出來.
for k=1 to rs.RecordCount
'輸出XML節點,rs("name")是child表中字段name的數據.
Response.Write("<childNode name='"&rs("name")&"' />")
'移到下一條數據
rs.MoveNext
Next
'結束firstNode節點
Response.Write("</firstNode>")
'關閉記錄集
rs.Close
'釋放記錄信對象
Set rs=nothing
'關閉連接
conn.Close
'釋放連接對象
Set conn=nothing
%>

然后在IIS中瀏覽xml-006.asp文件,會跟實驗5的asp輸出xml文檔一樣的.
在Flash中還是跟實驗5一樣調用.

實驗7:

重新做實驗3,不過XML文檔數據從數據庫中調用.
用戶登錄不推薦使用XML.推薦在ASP或其它語言中,做隱式判定.
了解:
ASP請點:
JSP請點:

這個還是要講的.便于理解下一個實驗.

數據庫:

打開Data.mdb數據庫.新建二個表.
表名分別為:
--------------------------------------------------
post
user
--------------------------------------------------

post表中:
輸入二個字段:分別為:
--------------------------------------------------
postID 自動編號
postName 文本
--------------------------------------------------
在 postID 字段點右鍵-->主鍵,保存.
打開post表,在postName字段輸入二條數據,數據分別為:
--------------------------------------------------
經理
職員
--------------------------------------------------
保存.

user表中:
輸入四個字段,分別為:
--------------------------------------------------
userID 自動編號
username 文本
password 文本
postName 文本
--------------------------------------------------
在 userID 字段點右鍵-->主鍵,保存.
打開user表,分別在username,password,postName字段輸入四條數據,數據分別為:
--------------------------------------------------
username password postName
MChooseFlash01 MChooseHappiness 經理
MChooseFlash02 MChooseHappiness 經理
EChooseFlash01 EChooseHappiness 職員
EChooseFlash02 EChooseHappiness 職員
--------------------------------------------------
保存.關閉數據庫.

數據庫到這可以了.下面是ASP:

打開記事本,輸入下面的代碼,然后保存為 xml-007.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
'xml-007.asp
dim conn,rs,sqlcom,post_arr
'設置文檔類型.
Response.ContentType="text/xml"
'輸出XML文檔.
Response.Write("<?xml version='1.0' encoding='gb2312'?>")
Response.Write("<!--xml-007.asp-->")
Response.Write("<UserDataList>")
'創建連接對象.
Set conn=Server.CreateObject("Adodb.Connection")
'這里用字符串方法連接數據庫.
'"Provider=Microsoft.Jet.OLEDB.4.0; 這個是數據庫驅動.
'Data Source="Server.MapPath("Data.mdb") 數據庫文件的相對路徑.
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("Data.mdb")
'創建記錄集對象.
Set rs=Server.CreateObject("Adodb.RecordSet")
'查詢數據庫的sql語句.
sqlcom="select * from post"
'執行sql語句.
'1,1 只讀.
'1,3 可讀可寫.
rs.Open sqlcom,conn,1,1
'重定義數組.
'rs.RecordCount 記錄集中總的記錄數.
Redim post_arr(rs.RecordCount)
'用for語句將post表中的數據循環出來.
'Ubound數組的最大上標.
for i=1 to Ubound(post_arr)
'將post表中的postName字段中的值存入數組post_arr.
post_arr(i)=rs("postName")
'移到下一條數據.
rs.MoveNext
Next
'這里用了嵌套for語句,
'第一個for j是將post_arr數組中的數據讀出來.也就是post表中的數據.
'第二個for k是將user表中的數據讀出來.
'用for語句將post_arr數組中的數據循環出來.
for j=1 to Ubound(post_arr)
'關閉記錄集.
rs.Close
'查詢數據庫的sql語句.
'根據post_arr(j)數組中的值為條件來重復執行sql語句.
'user是SQL中的要害字.要用中括號括起來.
sqlcom="select * from [user] where post='"&post_arr(j)&"'"
'執行sql語句.
rs.Open sqlcom,conn,1,1
'輸出XML節點.
Response.Write("<Post post='"&post_arr(j)&"'>")
'用for語句將user表中的數據循環出來.
for k=1 to rs.RecordCount
'輸出XML節點.
Response.Write("<UserData username='"&rs("username")&"' password='"&rs("password")&"' />")
'移到下一條數據.
rs.MoveNext
Next
'結束Post節點.
Response.Write("</Post>")
Next
'結束UserDataList節點.
Response.Write("</UserDataList>")
'釋放記錄信對象.
Set rs=nothing
'關閉連接.
conn.Close
'釋放連接對象.
Set conn=nothing
%>

在IIS中瀏覽xml-007.asp文件.跟實驗3中的xml文檔大致一樣.
打開實驗3中的Flash文件,把Flash中的加載xml地址換成:

myxml.load("http://localhost/xml/xml-007.asp?ran=" Math.random(9999));

然后測試影片.效果跟實驗3一樣.

實驗8:

怎么都講些不實用的東西啊?別急.下面就開始講實用的.
這個實驗比較有實用價值.就如藍色網站的側邊菜單來說.
如圖:

Flash處理外部XML文檔數據

放置的內容是有限的.這個實驗就可以用來擴展側邊菜單.
利用Accordion組件做容納多內容的網站側邊菜單.
效果圖:

Flash處理外部XML文檔數據

下面開始:

數據庫:

打開Data.mdb數據庫.新建二個表.
表名分別為:
--------------------------------------------------
column
columnData
--------------------------------------------------

column表中:
輸入三個字段:分別為:
--------------------------------------------------
columnID 自動編號
columnName 文本
columnIndex 數字
--------------------------------------------------
在 columnID 字段點右鍵-->主鍵,保存.
打開column表,分別在columnName,columnIndex字段輸入五條數據,數據分別為:
--------------------------------------------------
columnName columnIndex
專題欄目-01 0
專題欄目-02 1
專題欄目-03 2
專題欄目-04 3
專題欄目-05 4

--------------------------------------------------
保存.

columnData表中:
輸入四個字段,分別為:
--------------------------------------------------
cdID 自動編號
cdName 文本
cdURL 文本
columnIndex 數字
--------------------------------------------------
在 cdID 字段點右鍵-->主鍵,保存.
打開columnData表,分別在cdName,cdURL,columnIndex字段輸入下面的數據:
--------------------------------------------------
cdName cdURL columnIndex
ChooseFlash-01.1 http://www.happiness01.com 0
ChooseFlash-01.2 http://www.happiness02.com 0
ChooseFlash-01.3 http://www.happiness03.com 0
ChooseFlash-01.4 http://www.happiness04.com 0
ChooseFlash-01.5 http://www.happiness05.com 0

ChooseFlash-02.1 http://www.happiness01.com 1
ChooseFlash-02.2 http://www.happiness02.com 1
ChooseFlash-02.3 http://www.happiness03.com 1
ChooseFlash-02.4 http://www.happiness04.com 1
ChooseFlash-02.5 http://www.happiness05.com 1

ChooseFlash-03.1 http://www.happiness01.com 2
ChooseFlash-03.2 http://www.happiness02.com 2
ChooseFlash-03.3 http://www.happiness03.com 2
ChooseFlash-03.4 http://www.happiness04.com 2
ChooseFlash-03.5 http://www.happiness05.com 2

ChooseFlash-04.1 http://www.happiness01.com 3
ChooseFlash-04.2 http://www.happiness02.com 3
ChooseFlash-04.3 http://www.happiness03.com 3
ChooseFlash-04.4 http://www.happiness04.com 3
ChooseFlash-04.5 http://www.happiness05.com 3

ChooseFlash-05.1 http://www.happiness01.com 4
ChooseFlash-05.2 http://www.happiness02.com 4
ChooseFlash-05.3 http://www.happiness03.com 4
ChooseFlash-05.4 http://www.happiness04.com 4
ChooseFlash-05.5 http://www.happiness05.com 4
ChooseFlash-05.6 http://www.happiness06.com 4
ChooseFlash-05.7 http://www.happiness07.com 4

--------------------------------------------------
保存.關閉數據庫.

數據庫到這可以了.下面是ASP:

打開記事本,輸入下面的代碼,然后保存為 xml-008.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
'xml-008.asp
dim conn,rs,sqlcom,name_arr,index_arr
'設置文檔類型.
Response.ContentType="text/xml"
'輸出XML文檔.
Response.Write("<?xml version='1.0' encoding='gb2312'?>")
Response.Write("<!--xml-008.asp-->")
Response.Write("<ColumnList>")
'創建連接對象.
Set conn=Server.CreateObject("Adodb.Connection")
'這里用字符串方法連接數據庫.
'"Provider=Microsoft.Jet.OLEDB.4.0; 這個是數據庫驅動.
'Data Source="Server.MapPath("Data.mdb") 數據庫文件的相對路徑.
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("Data.mdb")
'創建記錄集對象.
Set rs=Server.CreateObject("Adodb.RecordSet")
'查詢數據庫的sql語句.column是SQL中的要害字.要用中括號括起來.
sqlcom="select * from [column]"
'執行sql語句.
'1,1 只讀.
'1,3 可讀可寫.
rs.Open sqlcom,conn,1,1
'重定義數組.
'rs.RecordCount 記錄集中總的記錄數.
Redim name_arr(rs.RecordCount)
Redim index_arr(rs.RecordCount)
'用for語句將column表中的數據循環出來.
'Ubound數組的最大上標.
for i=1 to Ubound(name_arr)
'將column表中的columnName字段中的值存入數組name_arr.
name_arr(i)=rs("columnName")
'將column表中的columnIndex字段中的值存入數組index_arr.
index_arr(i)=rs("columnIndex")
'移到下一條數據.
rs.MoveNext
Next
'這里用了嵌套for語句,
'第一個for j是將name_arr和index_arr數組中的數據讀出來.也就是column表中的數據.
'第二個for k是將columnData表中的數據讀出來.
'用for語句將name_arr和index_arr數組中的數據循環出來.
for j=1 to Ubound(name_arr)
'關閉記錄集.
rs.Close
'查詢數據庫的sql語句.
'根據index_arr(j)數組中的值為條件來重復執行sql語句.
sqlcom="select * from columnData where columnIndex="&index_arr(j)&""
'執行sql語句.
rs.Open sqlcom,conn,1,1
'輸出XML節點.
Response.Write("<Column name='"&name_arr(j)&"'>")
'用for語句將column表中的數據循環出來.
for k=1 to rs.RecordCount
'輸出XML節點.
Response.Write("<ColumnData name='"&rs("cdName")&"' url='"&rs("cdURL")&"' />")
'移到下一條數據.
rs.MoveNext
Next
'結束Column節點.
Response.Write("</Column>")
Next
'結束ColumnList節點.
Response.Write("</ColumnList>")
'釋放記錄信對象.
Set rs=nothing
'關閉連接.
conn.Close
'釋放連接對象.
Set conn=nothing
%>

在IIS中瀏覽xml-008.asp文件.可以看到xml文檔的結構跟實驗7中的xml文檔結構一樣.

下面就是Flash了

Flash中:
打開Flash,新建一個Flash文檔,大小200*230,命名 xml-008.fla ;
新建一個圖層,命名為:Actions
--------------------------------------------------
新建一個影片剪輯,命名為:btn_over ;此影片剪輯用來裝飾鼠標滑過時的效果.
新建二個圖層.分別命名為:
--------------------------------------------------
Actions
cont
--------------------------------------------------

在圖層cont的第一幀畫一個200*18,沒有邊框的矩形,填充顏色為#0099FF;透明度為0,x,y值為0,
在第三幀按[F6],選中該幀的矩形,將透明度調為50;再選中第一幀,打開屬性面板,在補間那選外形.
在圖層Actions的第三幀按[F6],在該幀輸入代碼: stop();
完成如圖:

Flash處理外部XML文檔數據

回到主場景,新建一個按鈕.命名為:btn ;
在'指針經過','按下'幀按[F6].
將庫中的 btn_over 影片剪輯拉到'指針經過'幀,x,y值為0,
再在'按下'幀畫一個200*18,沒有邊框的矩形,填充顏色為#FFF3CC; 透明度為50, x,y值為0,

回到主場景,新建一個影片剪輯.命名為:columnItem,
在高級選項那 標識符為:columnItem,在勾選上 '為ActionScript導出','第一幀導出'.
新建三個圖層,分別命名為:
--------------------------------------------------
btn
text
line
--------------------------------------------------
在圖層line的第一幀畫一條100*1的虛線.填充顏色為#660000; 透明度為80 ; x值為0,y值為18;
在圖層text畫一個動態文本框,大小為200*18; 文本顏色為:#660000; x,y值為0, 實例名為: cName ;
在圖層btn中,將btn按鈕元件拉到第一幀.x,y值為0,實例名為: btn ;
完成如圖:

Flash處理外部XML文檔數據

回到主場景.
打開組件面板,拉一個Accordion組件到庫中;
在Actions圖層的第一幀輸入下面的代碼:

//導入類.
import mx.core.View;
import mx.containers.Accordion;
//===========================================
//使用系統編碼.防止亂碼.
System.useCodepage = true;
//隱藏按鈕的鼠標手形.
Button.prototype.useHandCursor = false;
//===========================================
//實例化一個xml對象.
var columnData:XML = new XML();
//分析時忽略xml文檔中的空格.
columnData.ignoreWhite = true;
//加載http://localhost/xml/xml-008.asp.
columnData.load("http://localhost/xml/xml-008.asp?ran=" Math.random(9999));
//調用XML.onLoad事件.
columnData.onLoad = function(success:Boolean)
{
//假如加載成功,success=true;否則success=false;
if (success) {
//執行dragColumn函數.
dragColumn(columnData.firstChild.childNodes);
}
};
//==========dragColumn函數用來繪制專欄數據===========
function dragColumn(column_arr:Array):Void
{
//創建Accordion組件的實例.
//createClassObject(類名稱,"實例名",深度,{初始對象});
createClassObject(Accordion, "column", 0, {_x:0, _y:0, _width:200, _height:240});
//執行columnStyle函數.
columnStyle();
//獲取數組的長度.
var columnLen:Number = column_arr.length;
//專欄的子菜單數組.
var columnChild:Array;
//引用專題欄目的對象.
var MainItem:Object;
//循環創建專題欄目.
for (var i = 0; i<columnLen; i ) {
//創建專題欄目.MainItem引用新創建的對象.
//createSegment(類名稱,值或實例名稱,顯示的標題);
MainItem = column.createSegment(View, i, column_arr[i].attributes.name);
//獲取專欄的子菜單數組.
columnChild = column_arr[i].childNodes;
//循環創建專題欄目的子菜單.
for (var j = 0; j<columnChild.length; j ) {
//使用with語句簡寫代碼.
//創建專題欄目的子菜單.
//createChild("庫中的鏈接名","實例名稱",{初始對象});
//18.5是columnItem影片剪輯的高度和行距.
with (MainItem.createChild("columnItem", "columnItem", {_x:0, _y:18.5*j})) {
//顯示子菜單.
cName.text = columnChild[j].attributes.name;
//獲取點擊的URL;
btn.cURL = columnChild[j].attributes.url;
//btn.onRelease事件.
btn.onRelease = btnEvent;
}
}
}
}
//========執行btn.onRelease事件的函數=========
function btnEvent():Void
{
//連接點擊的URL.
getURL(this.cURL, "_blank");
}
//=======columnStyle函數設置專欄的樣式=========
function columnStyle():Void
{
//文本顏色.
column.setStyle("color", 0x660000);
//字體.
column.setStyle("fontFamily", "隸書");
//主題.
column.setStyle("themeColor", "haloOrange");
//點擊專欄的動畫.
column.setStyle("openEasing", mx.transitions.easing.Bounce.easeOut);
}

現在大家就可以測試影片了.

教程源文件:點擊這里下載源文件

分享:Flash游戲中導彈追蹤的算法
先看下效果吧:代碼如下:/*請教大家一個關于勢函數用到追蹤和攔截的算法有研究過的能不能指點一下!PoweredBySundayEmail:happyclub@163.com*/varst

/所屬分類:Flash教程/更新時間:2008-03-05
相關Flash教程
亚洲欧美一区二区原创| 欧美一区二区三区白人| 午夜精品美女自拍福到在线| 污污污污污污www网站免费| 国产一级中文字幕| 免费av一区二区三区四区| 国产亚洲一区二区三区在线观看 | 亚洲中字在线| 欧美亚洲精品一区| 99re视频| av男人的天堂av| 高清一区二区中文字幕| 成人av电影免费在线播放| 亚洲精品一区二区网址| 亚洲日本精品一区| 久久精品人妻一区二区三区| 精品久久电影| 亚洲黄一区二区三区| 91高潮在线观看| www.久久av.com| 秋霞欧美在线观看| 美女视频黄 久久| 精品黑人一区二区三区久久| 日本免费一区二区三区| 侵犯稚嫩小箩莉h文系列小说| 女同一区二区三区| 中文字幕一区在线观看视频| 国模极品一区二区三区| 国产九九在线观看| 亚洲av成人无码久久精品老人| 久久精品国产免费看久久精品| 欧美精品一区在线观看| 伊人久久大香线蕉成人综合网| 国产香蕉在线视频| 亚洲精品一区二区在线看| 精品美女国产在线| 999视频在线免费观看| 亚洲一区第一页| 国产精品入口尤物| free性中国hd国语露脸| 中文成人在线| 久久精品视频免费观看| 韩国福利视频一区| 久草福利在线观看| 在线免费观看亚洲| 国产丝袜欧美中文另类| 91av在线网站| 2018国产精品| 中文字幕亚洲在线观看| 国产精品美女一区二区| 国产91色在线|免| 国产美女视频免费观看下载软件| 电影一区中文字幕| 国产精品美女久久久久久久网站| 国产91在线高潮白浆在线观看 | 成人晚上爱看视频| 久久天天躁狠狠躁夜夜躁| 男女啪啪网站视频| 成人性生活视频| 99re成人在线| 欧美性受xxxx白人性爽| 欧美双性人妖o0| 国产精品美女在线观看直播| 亚洲美女区一区| 亚洲va欧美va国产综合剧情| 亚洲一级理论片| 四虎8848精品成人免费网站 | 无码黑人精品一区二区| 99久久综合| 欧美美女直播网站| 亚洲一区二区三区精品动漫 | 欧美一区二区在线观看| 免费看啪啪网站| 国产精品久久久久毛片| 韩国精品在线观看| 伦理中文字幕亚洲| 色悠悠在线视频| 牛牛精品成人免费视频| 欧美日韩人人澡狠狠躁视频| 欧美高清视频一区二区三区在线观看| 中文字幕亚洲精品在线| 蜜桃视频一区| 中文字幕欧美日韩| 中文字幕一区二区在线观看视频| 国产精品一区二区三区www| 1区2区3区精品视频| 亚洲xxxx在线| 男人天堂中文字幕| 噜噜噜久久亚洲精品国产品小说| 亚洲天堂成人在线| 五月天av在线播放| 美女久久精品| 欧美日韩精品国产| 日韩精品久久一区| 国产免费高清av| 99久久99久久精品免费观看 | 国产欧美亚洲视频| 成人免费毛片xxx| 亚洲激情综合| 一本一本久久a久久精品综合小说| 在线观看免费污视频| 久久久久久亚洲精品美女| 五月婷婷久久丁香| 亚洲ai欧洲av| 亚洲男人天堂久久| 久久久91精品国产一区二区精品| 91精品国产综合久久久久久蜜臀| 精品一区二区三区四| 老司机午夜精品视频在线观看| 神马国产精品影院av| 精品人妻一区二区免费| 成人精品电影| 亚洲国产三级网| 日本 片 成人 在线| 成人av动漫| 在线观看av一区| 99在线免费视频观看| 欧美日韩精品免费观看视欧美高清免费大片| 国产精品每日更新| 久久精品国产精品国产精品污| 91午夜交换视频| 26uuu久久综合| 亚洲一区二区三区sesese| 好吊色在线视频| 国产精品66部| 国产精品爽爽爽爽爽爽在线观看| 日韩xxxxxxxxx| 国产在线精品一区二区三区不卡| 热re99久久精品国产66热| 一区二区三区影视| 欧美aa在线视频| 97超级碰碰人国产在线观看| 老司机成人免费视频| 丝袜美腿亚洲一区二区图片| 欧美精品18videosex性欧美| 色欲一区二区三区精品a片| 久久亚洲精品伦理| 97国产精品视频| 黄色片子在线观看| 奇米888四色在线精品| 日韩在线一区二区三区| 欧美精品日韩一区| 99视频在线视频| 欧美男人操女人视频| 欧美va亚洲va| 特种兵之深入敌后| 亚洲欧洲日韩| 久久精品一区中文字幕| 阿v天堂2014| 久久青草久久| 欧美中文字幕在线观看| 日本一区二区欧美| 成人妖精视频yjsp地址| 91精品天堂| 精品毛片一区二区三区| 亚洲蜜桃精久久久久久久| 中文字幕中文字幕99| 国产福利91精品一区二区| 欧美主播一区二区三区美女| 无码aⅴ精品一区二区三区浪潮| 国产色噜噜噜91在线精品| 精品日韩欧美在线| 无码任你躁久久久久久老妇| 精品9999| 57pao国产精品一区| 黄色片视频网站| 99re成人精品视频| 精品一区2区三区| 最近高清中文在线字幕在线观看1| 狠狠色狠色综合曰曰| 91成人在线观看喷潮教学| 欧美变态网站| 亚洲男子天堂网| 日韩在线免费观看av| 首页综合国产亚洲丝袜| 国产精品女主播视频| ,一级淫片a看免费| 一区二区三区在线视频播放| 天堂8在线天堂资源bt| 久久九九热re6这里有精品| 日韩成人高清在线| 精品欧美一区二区久久久| 免费成人黄色大片| 免费看av成人| 伊人激情综合网| 欧美色视频一区二区三区在线观看| 国内成人精品2018免费看| dy888夜精品国产专区| 日韩中文字幕影院| 日本精品一区二区三区高清| 五月激情五月婷婷| 韩国亚洲精品| 国产成人精品最新| av小说天堂网| 五月天精品一区二区三区| 国产在线观看福利| 欧美激情偷拍自拍| 欧美精品激情blacked18| 五月婷婷亚洲综合| 亚洲视频一区二区免费在线观看| 99久久久久国产精品免费 | 亚洲欧美日韩区| 99热99这里只有精品| 国产v日产∨综合v精品视频| 日本精品一区二区三区高清 久久| 亚洲综合视频| 日韩大陆毛片av| 国产日产精品一区二区三区的介绍| 成人自拍视频在线观看| 日本一区二区在线视频| 亚洲经典视频| 国产香蕉精品视频一区二区三区 | 国产女人高潮时对白| 欧美日韩美女在线观看| 色91精品久久久久久久久| 99精品视频免费| 成人免费xxxxx在线观看| 日韩中文字幕免费在线观看| 欧美疯狂性受xxxxx喷水图片| 国产精品无码电影| 国产一区二区精品久久99| 欧美一级二级三级九九九| 一区二区三区国产好| 国产亚洲美女精品久久久| 久久这里只有精品国产| 中文字幕一区二区三区精华液| 国产精品一区二区免费在线观看| 欧美激情成人在线| 国产精品久久久久久久久免费| 欧美 日韩 国产 在线| 欧美人妇做爰xxxⅹ性高电影| 成人h动漫精品一区| 成人午夜在线播放| 福利网在线观看| 精品国产精品| 欧美与欧洲交xxxx免费观看| aaa一区二区| 91精品在线麻豆| 色婷婷国产精品免| 国产欧美一区二区在线| 国产97在线 | 亚洲| 欧美日韩国产在线一区| 91视频88av| 日本午夜精品久久久久| 国产亚洲精品高潮| 亚洲 欧美 成人| 精品高清一区二区三区| 欧美一区二区三区人| 久久人人爽人人片| 韩国成人精品a∨在线观看| 亚洲ai欧洲av| 日韩久久精品网| 国产精品久久久久久久久久东京| 免费电影日韩网站| 日韩精品在线免费播放| 福利一区二区三区四区| 亚洲一级二级在线| 一级黄色片毛片| 不卡的av电影在线观看| 成人在线国产视频| 亚洲香蕉网站| 精品国产综合久久| 亚洲人亚洲人色久| 日韩av电影免费观看高清| 奇米777日韩| 亚洲色图综合网| 无码人妻aⅴ一区二区三区有奶水| 一本久久精品一区二区| 久久久亚洲av波多野结衣| 国产清纯美女被跳蛋高潮一区二区久久w| 九色在线视频观看| 日韩经典一区二区| 亚洲一区二区高清视频| 欧美高清日韩| 国语精品免费视频| 美女少妇全过程你懂的久久 | 国产精品成人免费一区久久羞羞| 国产成人av在线影院| 黄色一级视频片| 日韩精品乱码免费| 好色先生视频污| 一区在线视频观看| 蜜桃999成人看片在线观看| 国产区精品区| 国产精品影院在线观看| 欧美精品三级在线| 97在线视频国产| 深夜视频一区二区| 美女啪啪无遮挡免费久久网站| 国产自产一区二区| 亚洲最新在线视频| 国产女18毛片多18精品| 日韩av一区二区在线| 亚洲婷婷久久综合| 日韩精品一区二区三区在线播放 | 2025国产精品自拍| 亚洲一区二区三区精品在线| 人妻丰满熟妇av无码久久洗澡 | 亚洲国产精品视频在线| 亚洲国产欧美精品| 瑟瑟视频在线免费观看| 精品久久久久久无| 中文字幕 国产| 亚洲第一页在线| 中文字幕+乱码+中文| 亚洲国模精品私拍| 一区二区三区免费在线| 国产午夜精品久久久| 国产91视频在线| 亚洲午夜av电影| 精品国产18久久久久久| 国产一区二区三区精品久久久| 亚洲高清精品视频| 日韩视频在线一区| 中文字幕在线中文字幕在线中三区| 久久精品国产综合| 黄色成人免费网| 欧美黑人巨大xxx极品| 91p九色成人| 任你躁av一区二区三区| 精品国产精品久久一区免费式| 成人欧美一区二区三区在线| 日韩欧美黄色| 亚洲自拍偷拍第一页| 欧美日一区二区| 精品国产一区二区三区免费 | 国产精品一区二区电影| 国产精品白丝av嫩草影院| 国产美女久久精品| 九色精品国产蝌蚪| 亚洲美女免费精品视频在线观看| av亚洲天堂网| 97精品国产97久久久久久久久久久久 | 91久久国产综合久久91| 精品第一国产综合精品aⅴ| 91美女精品网站| 色妞久久福利网| 日本综合视频| 茄子视频成人在线| 色橹橹欧美在线观看视频高清| 99久久无色码| 欧美黄色aaaa| 黄色www在线观看| 精品在线一区二区三区| caoporn超碰97| 国产婷婷一区二区| 久久亚洲AV无码专区成人国产| 狠狠躁天天躁日日躁欧美| 日韩精品在线免费看| 精品福利视频一区二区三区| 亚洲精品97久久中文字幕| 欧美美最猛性xxxxxx| 亚洲1区在线观看| 亚洲综合国产精品| 欧美日韩国产欧| 欧美乱做爰xxxⅹ久久久| 粉嫩av一区二区三区在线播放| 国产伦理在线观看| 亚洲成a人v欧美综合天堂下载| 免费看一级一片| 日韩美女天天操| 俄罗斯嫩小性bbwbbw| 久久人人爽人人爽人人片av高请| 波多野结衣欧美| 精品人伦一区二区三区| 久久电影一区| 少妇人妻互换不带套| 中文字幕不卡三区| 毛片久久久久久| 欧美一区二区啪啪| 亚洲高清视频网站| 97视频免费在线观看| 成人春色在线观看免费网站| 国产精品日韩欧美一区二区三区| 亚洲区国产区| 毛片av免费在线观看| 国产精品免费久久| 欧美日韩免费一区二区| 亚洲第一中文字幕在线观看| 黑人巨大精品欧美一区二区桃花岛| 国产成人小视频在线观看| 色综合色综合| www.激情网| ww久久中文字幕| www.黄色com| 亚洲福利影片在线| ww久久综合久中文字幕| 亚洲专区在线视频| 一本色道久久综合亚洲精品不卡 | 182午夜在线观看| 亚洲国产视频一区二区| 国产污视频网站| 九九九久久久久久| 在线观看欧美理论a影院| 一区二区三区国产福利| 不卡的av电影在线观看| 久操视频在线观看免费| 日韩欧美电影一区| 三级成人黄色影院| 亚洲最大的网站|