国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JavaScript > 正文

Flash 和 ASP - PHP 以及 javascript 的交互

2020-03-22 16:23:14
字體:
來源:轉載
供稿:網友

唉,第一次寫文章,真是很緊張,這是前幾天在網上查資料和自己研究的結果,希望能對一些朋友有用。水平所限,肯定有錯漏之處,煩勞高手指正,不勝感激!
下面就書歸正傳: Flash 以javascript 為中介和 ASP/PHP 交互 我們班有同學錄,人氣比較旺。前一段時間管理員托我寫一個基于 HTML 的播放器放在班級留言上面,要求很簡單,就是實現循環播放。于是就寫了一個,比較容易,無非就是 javascript 的操作和 ActiveX 控件的交互,查了查 MSDN 決定用 WMP 的 ActiveX 插件。寫完后,播放效果總是不盡如人意,不知是我寫的 javascript 有問題還是 WMP 的 javascript 接口有問題,在播放的時候有時不能循環。后來突然想到了 Flash 7.0 也是可以播放 mp3 的,于是開始了設計(沒學過系統工程所以不標準,但愿不會貽笑大方): 目標:
1. 播放mp3,基本播放控制功能(暫停,繼續,索引,音量控制等);
2. 當前曲目循環、列表曲目循環
實現:
1. 音樂列表從數據庫中動態檢索
2. 提供添加音樂 URL 的界面 這里,我的思路是:用戶訪問 ASP(PHP) 頁面 = ASP(PHP) 請求數據庫 = 返回數據集 = ASP(PHP) 將數據集寫為 javascript 變量 = Javascritp 通過 Flash 的接口函數寫到 Flash 中的 DynamicText 變量中 = Flash 將列表顯示
這樣就出現了一個問題,文件列表的數量是不定的,怎么在 Flash 中處理,設置幾個變量呢?我的解決辦法是(也許不是很好的辦法,但是卻很簡單,如果高手有更好的方法,請不吝賜教,謝謝了):在 Flash 中設置兩個變量,一個是保存文件名 varSongname 另一個是保存 URL varUrl。在 Server 端就生成形如(本文中的英文引號被自動替換成了中文引號,請注意):
var strSongname = “Songname1,Songname2,Songname3“;
客戶端 javascript 的變量定義/賦值語句,然后再使用 SetVariable() 語句將此變量傳入 Flash 中,Flash 就將字符串 split() 成數組,然后,不用我教了吧?各就各位的顯示出來吧 在這樣的思路指導下,誕生了3個文件(sFMP的意思是simple Flash MP3 Player) 1 ) sFMP.swf - Flash 文件作為用戶界面;2 ) sFMP.ASP (.PHP) - 請求數據庫將文件列表作為 javascript 的變量寫入返回的 HTML 文件;3 ) add.ASP (.PHP) 添加 URL 的頁面。下面就具體講解每個文件的程序邏輯,和工作步驟: sFMP.swf 的制作 由于用的是 Flash MX 2004 Professional 所以直接就借用了里面許多組件。(不過要慎重,因為一旦加入 ActionScript 2.0 和組件的支持,文件就會增肥,一般會變大60多KB,視使用組件多少而定。具體原因可能是要包含許多組建庫的緣故吧?)下面是里面使用到的組件: MediaPlayback 組件:
可以直接播放 MP3 很方便。其包括很多屬性和方法、事件。Macromedia 里面有比較詳細的說明。
InstanceName: _player
Action: on (load) { // 可以插入一些播放器初始化代碼
}
on (complete) { // 這個事件當一首音樂播放完畢時產生
// switching process
if (_root._cbLoopCur.selected == true) {
// 當選擇了循環播放當前曲目
_root._player.play();
} else {
if (_root._cbLoopAll.selected == true) {
// 選擇了循環播放全部列表曲目
var iIndexRead:Number = _root.SongsList.selectedIndex;
// 將列表中的選擇高亮條下移一個
// 如果已經到末尾則重置
iIndexRead++;
if (iIndexRead _root.SongsList.length - 1) {
// set html' target='_blank'>current song index = 0
iIndexRead = 0;
}
// 更新 List 顯示
_root.SongsList.selectedIndex = iIndexRead;
// 這里調用一個函數用來取得播放列表當前選擇的 URL
// 并用setMedia()和play()方法使播放器播放曲目
// 由于比較簡單所以略掉了
}
}
}
on (change) { // 正在播放音樂時候
}
on (progress) { // 正在下載音樂文件的時候
}
List 組件:
用來顯示從數據庫中檢索的文件列表。
InstanceName: SongsList
Action: on (change) {
// player control
// get list item data
var str:String = this.getItemAt(this.selectedIndex).data;
if (str.length 0 str != undefined) {
// open the URL
_root._player.setMedia(str, "MP3");
if (_root._player.contentPath.length 0) {
_root._player.play();
}
}
}
/*
從列表中讀出當前選擇的文件,取得其的 data (假設已經從數據庫中讀出所需資料,label 顯示文件名
data 則儲存的是文件的 URL)
由于將 MediaPlayback 組件設為 Autostart = false 所以需要運行 play() 方法使其開始播放
如果 Autostart = true 則一旦設置了 contentPath 屬性,就立即載入并播放
*/ Checkbox 組件:
有兩個,分別用來選擇是單曲循環還是列表循環。
InstanceName: _cbLoopCur 、_cbLoopAll
Action:
兩者是互斥關系,選擇一個就取消另一個,兩個都不選就是播放選擇曲目一遍,代碼簡單,略。 Dynamic Text 框:
有兩個,雖然不是組件,但卻是和 javascript 等實現交互的關鍵。
Variable: varSongname 、varUrl
兩個變量分別是保存外界傳入的文件名和 URL 。 Tips:
在 javascript 中,Flash 專門提供了很多接口函數,這里用到的就是設置 Flash 中變量的 SetVariable(variable_name,value) 函數;Flash 中,也提供了一個和 javascript 交互的 ActionScript 函數 fscommand() 。 sFMP.ASP(PHP) 文件程序邏輯: 這個的程序很簡單,我就不廢話,直接貼代碼了,如果有不懂的,可以問我,電子郵件聯絡。
%
' 這是 sFMP.ASP 的部分源代碼,經過了一些修改,可能會包含一些錯誤,因為沒有經過測試
' 有一些環境可能和你機器上面不同,請相應修改。
' 修改前的完整源代碼是經過 Windows98 + PWS + Access 環境的測試的
' 所以使用之前請仔細檢查有無拼寫或其他明顯錯誤,謝謝! Option Explicit
Dim rsFiles, cnn, strSql, strCnn
' 使用 ADO 鏈接數據庫,取得數據集,常規做法沒什么好講的
strCnn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" Server.MapPath("songs.mdb")
Set cnn=Server.CreateObject("ADODB.Connection")
cnn.Open strCnn strSql="SELECT * FROM songsInfo WHERE type='mp3' ORDER BY id DESC"
Set rsFiles=Server.CreateObject("ADODB.RecordSet")
rsFiles.CursorLocation=3
rsFiles.Open strSql,cnn,2,3 ' 如果取得數據集失敗則停止執行,輸出錯誤
If TypeName(rsFiles)="Nothing" Then
Response.Write("open RecordSet error br ")
Response.End()
End If
%
!-- 略去 HTML 代碼,大家可以自己加上 --
script language="javascript"
%
Dim strName, strUrl
' 遍歷數據集,準備輸出字符串
If rsFiles.RecordCount 0 Then
' 要將字符串準備成 var url = "url1,url2,url3"; 這樣的形式
strName = rsFiles.Fields("name") ' 這是取得文件名
strUrl = rsFiles.Fields("url") ' 這是取得其URL 本文作者:更多編程語言

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 奉新县| 广平县| 东丽区| 沅江市| 秦皇岛市| 会理县| 隆林| 民勤县| 桂林市| 和政县| 麟游县| 宁远县| 承德县| 镇平县| 锦屏县| 崇文区| 大连市| 长兴县| 阿勒泰市| 武夷山市| 桃源县| 凤凰县| 察哈| 四川省| 台前县| 犍为县| 新乡县| 建湖县| 西盟| 沧源| 常熟市| 乐业县| 航空| 虞城县| 余姚市| 张家港市| 舟山市| 永吉县| 耒阳市| 乌拉特前旗| 遵化市|