一起草最新网址_日韩一区二区麻豆国产_91视频婷婷_日本一区二区视频在线_日韩激情一区二区三区_国产另类第一区_成人免费在线播放视频_亚洲永久精品ww.7491进入_久久这里有精品视频_久久精品一级片_日韩av在线网页_波多野结衣不卡视频

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教程
麻豆一区产品精品蜜桃的特点| 亚洲一区3d动漫同人无遮挡| 亚洲熟妇无码av| 成人激情免费电影网址| 91精品久久久久久久| 91视频综合网| 亚洲欧美国产毛片在线| 久久九九国产视频| 精品欧美乱码久久久久久| 免费无码不卡视频在线观看| 亚洲一区日韩精品中文字幕| 精品久久久久久久久久久久包黑料 | 国产老熟女伦老熟妇露脸| 亚洲va久久久噜噜噜| 欧美日韩国产区| 国产第一页浮力| 亚洲 欧美综合在线网络| 国产精品亚洲天堂| 免费在线看一区| 日韩精品福利网站| 中文字幕天天干| 久久国产精品区| 精品视频9999| 国产精品无码永久免费不卡| 亚洲人吸女人奶水| 欧美日韩亚洲一二三| 国产综合无码一区二区色蜜蜜| 亚洲女人的天堂| 精品国产1区2区3区| 在线视频不卡国产| 久久午夜夜伦鲁鲁片| 亚洲一区中文日韩| 99re在线观看视频| 成人av午夜影院| 精品国产一二三四区| 天天综合天天综合色| 欧美 国产 综合| 久久久五月婷婷| 国产精品suv一区| 久久精品国产99精品国产亚洲性色| 亚洲日本乱码在线观看| 精人妻一区二区三区| 成人黄色免费视频| 久久精品免费网站| 国产99视频在线观看| 欧美久久久影院| 国产精品久久久久久福利一牛影视| 97久久久久久久| 国产又粗又猛又爽又黄| 91av视频在线观看| 国产精品中文字幕一区二区三区| 毛片一区二区三区四区| 在线电影一区二区三区| 亚洲人与黑人屁股眼交| 精品久久久免费| 久久精品无码一区| 成人在线国产视频| 日韩精品极品在线观看| 精品人妻少妇AV无码专区| 日韩av高清在线看片| 亚洲精品无码专区| 国产在线观看免费播放| 国产成人精品久久久| 久国内精品在线| 欧美日韩激情在线| 色综合久久久久久久久久久| 国产亚洲欧美在线| 精品无码一区二区三区蜜臀 | 精品黑人一区二区三区观看时间| 中文字幕亚洲一区| 国产人妖一区二区| 国产精品久久久久久久久久久久久久| 日韩欧美国产激情| 国产精品国产馆在线真实露脸| 中文字幕一区三区久久女搜查官| 久久亚洲私人国产精品va| 蜜乳av一区二区| 妞干网在线播放| 国产亚洲精品久久| 日韩毛片在线看| 亚洲少妇中文在线| 日韩在线播放一区| 欧美成人一区二区| 欧美成人在线直播| 国产成人免费xxxxxxxx| 国产精品999视频| 欧美高跟鞋交xxxxxhd| 国产精品久久久久一区二区三区 | 成人黄色av网站| 欧美精品免费视频| 一本到三区不卡视频| 丝瓜av网站精品一区二区| 人妻精品无码一区二区三区 | 日韩av电影免费播放| 久久天天躁狠狠躁夜夜躁| 色欧美片视频在线观看| 亚洲av色香蕉一区二区三区| 99热成人精品热久久66| 伊人伊成久久人综合网小说 | 销魂美女一区二区| 在线播放 亚洲| 91中文字幕在线| 亚洲免费av网址| 91女人视频在线观看| 精品91久久久| 在线播放豆国产99亚洲| 婷婷激情综合网| 狠狠色狠狠色合久久伊人| 超碰人人人人人人| 国产91对白在线观看九色| 2020国产精品自拍| 成人免费视频app| 一区二区高清视频在线观看| 韩国精品在线观看| 国产精品21p| 国产精品igao| 欧洲精品久久| 国产精品久久久久久久电影| 久久久激情视频| 男女黄床上色视频| 色欲av无码一区二区人妻| 成人性免费视频| 亚洲aⅴ男人的天堂在线观看| 亚洲精品小视频| 91精品国产综合久久小美女| 成人18视频日本| 国产高清第一页| 日韩精品一卡二卡| 香蕉久久久久久av成人| 欧美一级久久久| 精品国产老师黑色丝袜高跟鞋| 国产主播一区二区| 99久久99久久精品国产片果冻| 亚洲一区欧美一区| 精品成人av一区| 色狠狠桃花综合| 91亚洲男人天堂| 国产第一页第二页| 免费观看精品视频| 国产精品wwwwww| 日本强好片久久久久久aaa| 五月婷婷丁香综合网| 久久久精品999| 日韩精品视频观看| 欧美三区在线观看| 亚洲va国产va欧美va观看| 日精品一区二区三区| 国产7777777| 国产毛片久久久久久久| 波多野结衣小视频| 美国黄色一级毛片| 日本中文字幕有码| 色哟哟网站在线观看| 欧美激情视频一区二区| 日韩欧美在线影院| 欧美一区二区三区电影| 欧美日韩精品福利| 久久夜色精品亚洲噜噜国产mv| 奇米四色中文综合久久| 国产日产精品一区二区三区四区| 国产视频一区二区不卡| 国产精品高潮呻吟视频| 欧美精品免费播放| 国内免费精品永久在线视频| 亚洲女人初尝黑人巨大| 久久一区二区视频| 成人一区二区三区在线观看| 国产精品丝袜一区| 欧美丝袜第一区| 国产精品不卡一区| 中文字幕国产一区二区| 亚洲人成网站在线| 午夜国产小视频| 国产成人在线免费视频| 国产精品白浆一区二小说| 欧美一区二区激情视频| 久久精品一二区| 精品国产无码一区二区| 国产成人精品一区二区色戒| 久青草免费视频| 久久精品国产亚洲av无码娇色| 久久亚洲精品大全| 99色这里只有精品| 中国人体摄影一区二区三区| 在线观看国产一区| 久久婷婷一区二区| 国精产品一区一区| 中文字幕免费视频观看| 国产人妻精品一区二区三| 手机在线观看日韩av| 国产精品一区二区免费看| 亚洲人体一区| 日本www.色| 999久久久久| 国产片一区二区三区| 日韩在线视频中文字幕| 欧美视频观看一区| 五月天婷婷影视| 91人妻一区二区三区| 中文字幕欧美日韩一区二区| xxx中文字幕| www.com久久久| 久久只有这里有精品| 女同性αv亚洲女同志| 色99中文字幕| 特色特色大片在线| 日本黄色片视频| 国产高清不卡一区| 欧美国产精品专区| 欧美日韩在线免费观看| 欧美三级电影一区| 中文字幕制服丝袜一区二区三区 | 成人网在线免费看| 永久免费在线看片视频| 国产精品久免费的黄网站| 国产精品污污网站在线观看 | 成人动漫视频在线观看完整版| 五码日韩精品一区二区三区视频| 激情视频小说图片| 国产又大又黄又粗又爽| 欧美精品99久久久| 久久九九精品| 国产精品福利一区| 亚洲精品欧美激情| 中文字幕亚洲精品在线观看| 欧美高清视频一二三区| 成人午夜电影在线播放| 黄色一级片在线看| 久久久夜色精品| 久久福利视频一区二区| 国产在线精品免费| 亚洲精品久久久久久久久久久久久久| 亚洲一区二区三区中文字幕 | 日韩欧美一区二区免费| 色噜噜久久综合| 精品久久久久久中文字幕大豆网| 欧美视频精品一区| 欧美久久婷婷综合色| 在线观看日韩高清av| 91福利精品第一导航| 欧美日韩国产美女| 日韩一区av在线| www日韩在线观看| 大桥未久av一区二区三区中文| 久久视频在线视频| av黄色在线免费观看| bt欧美亚洲午夜电影天堂| 九色精品美女在线| 久久美女福利视频| 亚洲综合免费视频| 久久99久久99精品免视看婷婷 | 亚洲三区在线播放| 国产精品国产三级国产aⅴ原创| 亚洲一区二区三区在线| 91国产美女视频| 日本wwwwwww| 肥臀熟女一区二区三区| 亚欧色一区w666天堂| 久久免费视频网| 中文字幕a在线观看| 三大队在线观看| 麻豆久久久久久久| 日韩写真欧美这视频| 国产精品初高中精品久久| 亚洲影院一区二区三区| 亚洲片国产一区一级在线观看| 丰满熟女人妻一区二区三区| 亚洲人成影院在线观看| 18性欧美xxxⅹ性满足| 色天使在线视频| 国产精品一区二区三区在线免费观看 | 国自产拍偷拍精品啪啪一区二区| 免费看污黄网站| 天堂网一区二区三区| 亚洲美女视频在线观看| 欧美一区二区影视| 久久久水蜜桃av免费网站| 欧美日韩一区在线| 99精品一级欧美片免费播放| 性生活黄色大片| 精品一区免费av| 精品国产自在精品国产浪潮| 亚洲免费av一区| 成人小视频免费观看| 99精品国产一区二区| 国产又大又黄又粗| 欧美精品一区二区三| 亚洲欧美视频二区| 精品无码av一区二区三区不卡| 黄色一级大片在线免费看国产一| 亚洲国产欧美一区二区丝袜黑人 | 久久久久久久久久97| 久久精品国产久精国产| 欧美色欧美亚洲高清在线视频| 蜜桃av噜噜一区二区三区| 国产91综合网| 九九九热999| 一区二区三区免费高清视频| 欧美三级资源在线| 日本男女交配视频| 高清在线成人网| 亚洲精品成人在线| 国产精品二区三区四区| 亚洲一级av毛片| 久青草国产97香蕉在线视频| 强制高潮抽搐sm调教高h| 亚洲国产日韩欧美在线图片| 91视频免费版污| 免费视频一区二区| 久久久精品免费| 欧洲成人午夜精品无码区久久| 亚洲综合在线视频| 只有这里有精品| 在线观看国产精品入口男同| 亚洲激情自拍视频| 亚洲欧美一区二区原创| 韩国v欧美v日本v亚洲v| 日本中文字幕网址| 亚洲国产综合视频在线观看| 97国产精东麻豆人妻电影 | 无码久久精品国产亚洲av影片| 555www色欧美视频| 午夜爱爱毛片xxxx视频免费看| 亚洲国产精品女人久久久| 在线精品视频播放| 日韩一区国产二区欧美三区| 特级西西人体高清大胆| 一区二区亚洲欧洲国产日韩| 亚洲精品乱码久久久久久久久久久久 | 91视频-88av| 国产精品污视频| 中文字幕亚洲精品| 黄色av免费播放| 久久久www成人免费精品| 老牛嫩草一区二区三区日本 | 好吊色在线观看| 99在线高清视频在线播放| 青青草国产精品97视觉盛宴| 久久夜色撩人精品| 国产色视频在线| 女人一区二区三区| 91网站黄www| www.四虎精品| 欧美tk—视频vk| 国产精品一二三四五区| 欧美日韩免费精品| 成人免费av网站| 国产a级片免费观看| 中文字幕永久免费视频| 国产有码在线一区二区视频| 久久久久国产精品一区三寸| 蜜桃成人免费视频| 国产精品国产三级国产普通话三级| 少妇高清精品毛片在线视频| 91丨九色丨黑人外教| 在线一区亚洲| 最新国产成人在线观看| 五月婷婷深爱五月| 欧美三级在线播放| 在线不卡av电影| 久久久久久久久久久av| 国产成人自拍高清视频在线免费播放| 污污网站免费观看| 欧美三级韩国三级日本三斤| 貂蝉被到爽流白浆在线观看| 欧美在线观看日本一区| 97久久超碰国产精品| 天堂网av手机版| 欧美日韩dvd| 777色狠狠一区二区三区| 精品国产999久久久免费| 欧洲美女和动交zoz0z| 亚洲制服欧美中文字幕中文字幕| 三大队在线观看| 久久精品视频导航| 国产黄a三级三级看三级| 国产九色porny| 欧美三级三级三级| wwwav国产| 国产精品亚发布| 久久丝袜美腿综合| 青青草原网站在线观看| 日本一区免费视频| 夜夜爽99久久国产综合精品女不卡 | 天天舔天天干天天操| 2022中文字幕| 欧美日韩电影在线| 91福利在线观看视频| 女人色极品影院| 亚洲精品国产美女| 成人毛片老司机大片| 中文字幕久久久久久久| 国产精品自产拍在线观| 污片在线观看一区二区| 亚洲精品乱码久久| 少妇高潮久久77777| 精品亚洲永久免费| 风间由美久久久| 日韩欧美自拍偷拍| 无码无套少妇毛多18pxxxx| 黄色网址在线免费看| 深夜成人在线观看| 成人激情免费网站| 国产视频精品免费| 日本一区二区三区四区在线观看| 一卡二卡欧美日韩| 中文字幕在线观看免费| a级片一区二区| 欧美一级一区二区| 国产人久久人人人人爽|