欧美三区四区_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教程
在线亚洲美日韩| 日韩欧美你懂的| 日本一区二区在线播放| 黄色片视频在线播放| 亚洲精品毛片一区二区三区| 色777狠狠狠综合伊人| 亚洲欧洲精品成人久久奇米网| 久久久91精品| 九色自拍视频在线观看| 国产精品久久久久久影视 | 国产精品igao| 中文字幕日韩经典| 欧美精品日本| 日本精品视频一区二区三区| 91久久中文字幕| 艳妇乳肉亭妇荡乳av| 欧美黄页在线免费观看| 粉嫩高潮美女一区二区三区| 亚洲天堂av在线免费观看| 艳母动漫在线免费观看| 国产一级免费视频| 你懂的国产精品| 色婷婷亚洲精品| 成人免费视频网站| 国产精品理论在线| 牛牛精品成人免费视频| 亚洲欧洲av一区二区三区久久| 国内伊人久久久久久网站视频| 欧美成人三级在线播放| 熟妇高潮一区二区高潮| 国产九九视频一区二区三区| 亚洲男人天堂网| 亚洲精品无码国产| 国产精品无码一区二区桃花视频 | 日本色综合中文字幕| 精品国产一区二区三区忘忧草 | 成人免费91| 亚洲一区视频在线播放| 国产精品无码白浆高潮| 日本在线不卡视频一二三区| 日韩av中文在线| 日本免费a视频| 91亚洲国产成人久久精品麻豆| 久久久久久夜| 日韩精品高清在线| 欧美男女爱爱视频| 亚洲国产av一区二区| 韩国av一区二区三区四区| 怡红院精品视频| 国产无套内射久久久国产| 性欧美一区二区三区| 国产一区中文字幕| 久久精品在线视频| 亚洲一区二区三区四区精品| 日韩精品一页| 国产精品免费aⅴ片在线观看| 欧美中文字幕在线观看| 国产夫妻性爱视频| 韩国女主播一区二区三区| 夜夜嗨av一区二区三区网页 | 91网在线免费观看| 国产视频精品免费| 一区二区免费不卡在线| 欧美二区乱c少妇| 精品久久久影院| 亚洲色图综合久久| 欧美精品一区二区三区三州| 后入内射欧美99二区视频| 成人午夜精品在线| 97在线日本国产| 中文字幕xxx| 精品国内自产拍在线观看视频| 日韩欧美亚洲一二三区| 久久综合一区二区三区| 天堂在线免费观看视频| 久久深夜福利| 深夜福利91大全| 在线视频观看91| 99久热这里只有精品视频免费观看| 亚洲国产一区视频| 久久国产精品-国产精品| 黄色一级片免费在线观看| 日日夜夜免费精品| 日韩中文字幕国产精品| 手机精品视频在线| 日韩黄色网络| 欧美三级乱人伦电影| 福利网在线观看| 亚洲精品成人电影| 久久久久久亚洲综合影院红桃| 国产成人在线一区| 潘金莲一级黄色片| 亚洲精品女人| 中文字幕在线精品| 9191在线视频| 精品国产91| 精品乱人伦小说| 日韩中文字幕免费在线| 国产精品一区三区在线观看| 亚洲成人av在线电影| 欧美日本韩国国产| 精品久久在线观看| 久久久99久久| 99久久精品免费看国产四区 | 在线观看国产精品网站| 免费日韩在线观看| 婷婷激情一区| 亚洲夂夂婷婷色拍ww47| 热re99久久精品国产99热| 国产老妇伦国产熟女老妇视频| 99在线热播精品免费| 国产精品亚洲精品| 亚洲欧美在线观看视频| 久久国产视频播放| 999在线精品| 在线观看91视频| 激情小视频网站| 99精品在线免费观看| 欧美日韩亚洲视频一区| 欧洲xxxxx| 国产亚洲一区二区手机在线观看| 亚洲精品国久久99热| 欧美色欧美亚洲另类七区| 成人av一区二区三区在线观看| 久久人人爽爽爽人久久久| 99re国产| 进去里视频在线观看| 不卡电影一区二区三区| 91精品在线一区| 精品黑人一区二区三区| av电影天堂一区二区在线观看| 成人av番号网| 久久这里只有精品9| 久久奇米777| 国产亚洲欧美一区二区 | 神马香蕉久久| 日韩免费性生活视频播放| 日韩av卡一卡二| 久久人人99| 中文字幕亚洲一区在线观看| 人妻精品久久久久中文字幕| 一本色道久久综合| 久久久久久国产精品| 欧美精品久久久久性色| 国产一区不卡在线| 国产欧美一区二区白浆黑人| 国产精品尤物视频| 国产欧美日韩视频在线观看| 欧美在线视频一区二区三区| 国产精欧美一区二区三区蓝颜男同| 五月天国产精品| 成人一对一视频| 一道本一区二区三区| 亚洲精品久久久久中文字幕欢迎你| 欧美丰满熟妇bbb久久久| 午夜精品影院| 欧美黑人xxxx| 日本三级黄色大片| 97久久超碰国产精品电影| 国产精品手机在线| 污污的视频网站在线观看| 亚洲va欧美va国产va天堂影院| 久青草视频在线播放| 国产96在线亚洲| 亚洲精品一线二线三线| 在线视频 日韩| 在线亚洲伦理| 国产精品久久97| 一级特黄特色的免费大片视频| 国产精品成人在线观看| 黄色网址在线免费看| 亚洲天堂中文字幕在线观看| 精品国产凹凸成av人网站| 亚洲激情 欧美| 久久精品官网| 91精品久久久久久久久久久久久 | 日韩精品福利网站| 国产精品成人无码免费| 国产一区美女在线| 国产伦精品一区二区三区照片| 精品国产第一福利网站| 欧美日韩一级二级三级| 精品国产鲁一鲁一区二区三区| 国内激情久久| 欧洲一区二区视频| 在线观看一二三区| 一区二区成人在线| 少妇高清精品毛片在线视频| 欧美电影《睫毛膏》| 色综合久综合久久综合久鬼88| 国产黄色片免费看| 国产精品对白交换视频| 欧美黑人在线观看| 欧美理论视频| 欧美夫妻性生活视频| 制服.丝袜.亚洲.中文.综合懂色| 中文字幕国产精品一区二区| 视色,视色影院,视色影库,视色网 日韩精品福利片午夜免费观看 | 日日夜夜天天综合| 欧美一区二区久久| 右手影院亚洲欧美| 国产精品99久| 四虎永久国产精品| 欧美1区二区| 久久精品国产欧美激情| 成人精品在线看| 国产精品美女久久久久久久| 免费人成自慰网站| 水蜜桃久久夜色精品一区| 国模精品视频一区二区| 91黄色在线视频| 色婷婷综合久久久中文一区二区 | 国产aⅴ激情无码久久久无码| 国产乱色国产精品免费视频| 欧美一区免费视频| 久久视频在线观看| 欧美成人午夜影院| 日本一区二区三区久久| 午夜亚洲福利老司机| 国产精欧美一区二区三区白种人| 亚洲一区免费| 成人女人免费毛片| 国产欧美视频在线| 综合国产在线视频| 91青青草视频| 疯狂做受xxxx欧美肥白少妇| 色诱av手机版| 激情深爱一区二区| 天堂精品一区二区三区| 久久99免费视频| 性欧美亚洲xxxx乳在线观看| 性欧美8khd高清极品| 91.com在线观看| 青青操在线播放| 日本一区二区三区dvd视频在线 | 久久国产人妖系列| 品久久久久久久久久96高清| 午夜先锋成人动漫在线| 午夜精品久久久久久久白皮肤| 国产福利资源在线| 日韩一级大片在线| 国产探花在线视频| 国产精品毛片大码女人| 999精品视频在线| 免费成人美女在线观看| 日韩中文字幕一区二区| 奇米影视777在线欧美电影观看| 欧美精品videos| 性色av蜜臀av| 亚洲精品在线一区二区| 国产大片aaa| 黑人巨大精品欧美一区二区三区| 私密视频在线观看| 91小视频在线| 国产a级一级片| 日日骚欧美日韩| 亚洲精品中文字幕在线| 成人影院在线| 成人国产精品久久久| 精品国产乱码一区二区三区| 久久精品视频中文字幕| 国产ts变态重口人妖hd| 欧美大胆一级视频| 久久精品美女视频| 黑丝美女久久久| 亚洲黄色小说视频| 国产精品福利电影一区二区三区四区 | 国产精品视频黄色| 精品综合免费视频观看| 日本丰满少妇黄大片在线观看| 欧美日本精品| 久久精品国产精品青草色艺| 国产不卡一区| 91热精品视频| 巨人精品**| 国产精品第2页| 久久亚洲精精品中文字幕| 欧美精品激情在线观看| 香蕉视频黄色片| 中文字幕亚洲一区二区三区| 国产喷水吹潮视频www| 精品少妇一区二区三区 | 超碰福利在线观看| 日韩精品在线第一页| 懂色av蜜臀av粉嫩av喷吹| 91精品国产综合久久久蜜臀图片 | 国产一区二区三区四区三区四| 久久av一区二区三区亚洲| 日韩免费在线| 国产高清自拍99| 成人在线国产| 国产高清自拍一区| 精品国产aⅴ| 高清视频一区二区三区| 精品欧美久久| 粉嫩av一区二区三区免费观看| 国产精品免费大片| 91中文精品字幕在线视频| 琪琪久久久久日韩精品| 成人看片人aa| 九一精品国产| 岛国视频一区| 日韩在线观看| 狠狠色狠狠色综合人人| 99精品在线免费在线观看| 国产精选一区二区| 91精品高清| 日本在线播放不卡| 亚洲国产1区| youjizz.com亚洲| 麻豆亚洲精品| 丝袜人妻一区二区三区| 久久99热99| 午夜dv内射一区二区| 成人性生交大片免费看中文| 天天操天天爽天天射| av不卡免费电影| 成人性生交视频免费观看| 国产欧美日韩另类一区| 伊人久久一区二区三区| 亚洲天堂免费看| 免费看91的网站| 色婷婷激情一区二区三区| 久草免费新视频| 91精品国产欧美一区二区| 亚洲av无码精品一区二区| 精品国产一区二区在线观看| 国产精品无码久久av| 中文字幕亚洲欧美日韩高清| 日韩av中字| 奇米四色中文综合久久| 红杏一区二区三区| 99re视频| 女人天堂亚洲aⅴ在线观看| 亚洲女人毛片| 麻豆精品久久精品色综合| 日韩手机在线观看视频| 久久久久久久久97黄色工厂| 亚洲最大的黄色网| 激情成人中文字幕| 久久婷婷国产麻豆91| 欧美一区二区精美| 国产一区二区自拍视频| 日韩在线免费av| 四虎国产精品永久在线国在线| 国产精品美乳在线观看| 日韩夫妻性生活xx| 日韩欧美视频第二区| 日韩精彩视频在线观看| 久热免费在线观看| 久久久久久久久久久黄色| 六月婷婷七月丁香| 在线看国产日韩| 亚洲天堂一二三| 中文字幕国内精品| 日韩综合av| 91探花福利精品国产自产在线| 中文字幕一区二区三区在线视频| 日韩最新中文字幕| 成人一道本在线| 亚洲av无码一区二区三区观看| 色综合天天视频在线观看| 69国产精品视频免费观看| 国产一区二区三区视频免费| 最新日韩一区| 91视频免费在线| 在线日本成人| 女人扒开屁股爽桶30分钟| 欧美经典一区二区| 精品国产大片大片大片| 91精品国产综合久久精品麻豆| 性中国xxx极品hd| 亲爱的老师9免费观看全集电视剧| 欧美男同视频网| 中文字幕中文字幕在线中心一区 | 欧美xxxooo| 日韩你懂的在线播放| 性插视频在线观看| 国产精品一区二区三区毛片淫片| **女人18毛片一区二区| 欧美人成在线观看| 久久久久国产精品免费免费搜索| 纪美影视在线观看电视版使用方法| 91麻豆精品国产无毒不卡在线观看| 亚洲第一天堂网| 日韩**中文字幕毛片| 婷婷综合在线| 日日橹狠狠爱欧美超碰| 国产精品久久久久永久免费观看 | 精品国产乱子伦一区二区| 裸模一区二区三区免费| 六月丁香综合在线视频| 岛国av免费观看| 欧美色电影在线| 高清乱码毛片入口| 国产美女搞久久| 国产精品视区| 免费看的av网站| 在线国产电影不卡| 秋霞av鲁丝片一区二区|