cmp播放器

cmp播放器,是一款免費的線上Flash音樂播放器。

CMP簡介

CMP是一款免費的線上flash音樂播放器,全稱為CenFun Music Player,簡稱為"CMP"。
CMP致力於提供最佳線上音樂播放解決方案,支持的音頻視頻格式主要有MP3,FLV,MP4,並可以通過網頁JS接口實現WMP(Windows Media Player)所支持的格式播放,如wma等。主要功能特色有列表式播放(自定義音樂專輯和列表),MP3可視化效果(聲音頻譜),同步歌詞(默認支持lrc歌詞以及kmc卡拉ok歌詞),高清視頻和線上直播(h264/rtmp),自定義皮膚,載入各種外掛程式等等,CMP4支持API的調用,可讓用戶實現更多自定義功能。
為什麼在web環境中採用基於flash的播放器優於wmp?因為wmp是IE+Windows Only,很顯然這已經不再符合現在的網路發展趨勢。而flash具有很強的跨平台能力,基本支持所有PC作業系統(win/linux/mac)和瀏覽器(IE/FireFox/Chrome/Opera/Safari等),這樣才能使你網站的播放器具有更廣泛的兼容性。當前,flash已經是使用最多的網路媒體播放軟體,而且除了PC系統,flash已經開始全面支持android手機系統,所以web環境中(BS)採用基於flash的播放器無疑是最佳選擇。
CMP為純綠色軟體,不含有任何廣告,後門,彈出,限制等之類的東西
CMP完全運行環境僅靜態空間即可,完全運行於客戶端,由flash/xml/html/js/文本和圖片組成
CMP有強大的自定義參數能力,可以很方便的實現完全動態數據支持,服務端不限(asp/php/.net/jsp等)
CMP為免費軟體,無需任何使用費用
CMP1.1(2005) -> CMP2.0(2006) -> CMP2.1(2007) -> CMP3(2008) -> CMP4(2009)

CMP基礎文檔

全局配置Config.xml

CMP基於flash開發,同所有flash一樣,參數有以下兩個來源:
URL中的查詢字元串:cmp.swf?parameter_name=parameter_value
HTML的FlashVars參數值:<param name="flashvars" value="parameter_name=parameter_value" />
CMP所有參數都可以從以上2種方式傳入,URL傳參可以很方便用於單曲播放,
而用flashvars可以結合瀏覽器快取最大化的最佳化網路。
儘管以上方式可以傳入所有參數,但如果太多的話就會很雜,
不宜管理,還有轉義問題,URL長度限制問題(IE限2083長度)等
所以,CMP還支持通過載入一個XML配置檔案來讀取參數的方式,
實際上就是將需要的參數打包到這個配置檔案中,然後進行載入解析:
載入一個XML配置檔案默認配置檔案為config.xml,也可以用url參數自定義:cmp.swf?url=myconfig.xml
更多config.xml配置詳見參考資料。
自定義配置路徑相關參數
config配置內容參數,cmp.swf?config=配置內容,也就是將配置的xml內容以一個字元串傳入
url自定義完整配置路徑,默認值為config.xml,如cmp.swf?url=config.asp
idid標識的快捷配置路徑方式,如cmp.swf?id=1,則自動載入1.xml的檔案作為配置
asp服務端為asp程式的快捷配置路徑方式,如cmp.swf?asp=1,將載入cmp.asp?id=1為配置
aspx服務端為aspx程式的快捷配置路徑方式,如cmp.swf?aspx=1,將載入cmp.aspx?id=1為配置
php服務端為php程式的快捷配置路徑方式,如cmp.swf?php=1,將載入cmp.php?id=1為配置
jsp服務端為jsp程式的快捷配置路徑方式,如cmp.swf?jsp=1,將載入cmp.jsp?id=1為配置
cgi服務端為cgi程式的快捷配置路徑方式,如cmp.swf?cgi=1,將載入cmp.cgi?id=1為配置
各種方式優先權和使用範圍,見上文的CMP4獲取配置的各種方法,跨域載入配置檔案時,需跨域策略檔案crossdomain.xml支持
基本信息
name自定義播放器的名稱,默認為當前CMP版本值
link右鍵中點擊名稱打開的連結,默認為CMP論壇地址
link_target連結是在當前視窗(默認_self)還是新視窗(_blank)打開
description描述,無歌詞時顯示,默認為空
logo載入logo圖示的地址,默認為空,支持AS3 API
支持多個和多屬性定義,如居右下角顯示:logo="{src:logo.png,xywh:&#91;10R,10R,0,0&#93;}"
logo_alphalogo全局透明度,默認0.2
如果在受限頁面中,將無法打開連結,或者被瀏覽器攔截
皮膚相關
skins預載入皮膚的地址列表,可設定多個,逗號隔開,如skins="default.zip,wmp11.zip"
提示:如果皮膚路徑格式都正確,但載入錯誤,可能是因為空間對zip檔案的限制訪問導致,可嘗試將後綴改為swf等
skin_id當前需要使用皮膚的id序號,默認值為1,如果沒有設定以上skins皮膚列表,則載入默認皮膚,此時skin_id為0
skin單個皮膚地址快捷設定,它將自動附加到上面skins設定的前面,並強制skin_id為1
很多空間存在.zip後綴檔案無權讀取的問題,可嘗試修改皮膚後綴為swf或jpg解決,如skin="default.swf"
外掛程式和背景
plugins_disabled是否禁用載入所有外掛程式,默認為0不禁用
BGCOLOR播放器所在flash背景顏色,默認為空
plugins外掛程式地址列表,支持多個,支持多屬性自定義
plugin附加外掛程式地址,將自動添加到plugins參數前面
backgrounds背景地址列表,支持多個,支持多屬性自定義
background附加背景地址,將自動添加到backgrounds參數前面
外掛程式相關格式說明
播放列表相關
lists列表檔案地址,默認為list.xml,可設定多個,如"list1.xml,list2.xml,list3.xml"
跨域載入列表檔案時,需跨域策略檔案crossdomain.xml支持
list將一個列表xml的內容以一個字元串的方式傳入
play_mode播放模式(控制視窗目前僅提供3個控制按鈕,也就是重複按鈕,隨機按鈕,單曲按鈕)
"0"或"normal" 正常順序播放模式,默認模式,即按列表順序逐個播放
"1"或"repeat" 重複播放模式,即播放完成後再反覆播放
"2"或"random" 隨機播放模式,即從列表隨機選擇一個播放
"3"或"upward" 按列表向上播放模式,和正常順序播放方向相反
"4"或"single" 單個播放模式,即單個播放完成後停止
play_id指定當前播放的列表id序號,默認為1,最後一個播放的id將被自動保留
auto_play是否開啟自動播放,0:不開啟(默認), 1:開啟
auto_open當下一個要播放的項是一個目錄時,是否自動打開後進行播放,0:不進行自動打開(默認),1:開啟自動打開
不支持臨時外載的目錄,也就是有list_src參數的列表項
click_play是否單擊列表開始播放,默認為0,即需要雙擊才播放
click_next雙擊播放模式下,點擊了播放項以外的另一項後,是否將此項作為下一個要播放的項,無視播放模式選擇,默認為1,開啟選擇
default_type默認媒體的類型,默認為video,即無法識別媒體類型時,將使用視頻模組去處理,如改為sound則默認為聲音類型
list_delete是否在列表顯示列表刪除按鈕(記憶體中刪除),默認0不顯示,為1則可在列表每一行後顯示一個刪除按鈕
全局代理程式
src_handler全局音樂地址代理,如:src_handler.php?vid={vid}
lrc_handler全局歌詞地址代理,如:lrc_handler.php?title={label}&rd={rd}
bg_video全局視頻背景設定
bg_lrc全局歌詞背景設定
image_handler縮略圖全局代理,需縮略圖皮膚方可顯示
text_handler描述全局代理,需縮略圖皮膚方可顯示
跨域載入歌詞或描述時,需跨域策略檔案crossdomain.xml支持
聲音相關
volume當前音量,範圍從 0(靜音)至 1(最大音量) 默認0.8
panning聲音平移參數,表示聲道從左到右的平移,範圍從 -1(左側最大平移)至 1(右側最大平移),默認值0表示沒有平移(居中)
mute是否靜音,默認為0不靜音
sound_sample是否啟用聲音樣本處理,默認不開啟,開啟後將耗費更多系統資源
開啟取樣處理,能實現在跨域播放mp3時顯示頻譜效果,同時支持均衡器參數設定
sound_eq聲音樣本均衡參數(必須啟用sound_sample聲音樣本處理才有效),默認為空,即不進行均衡過濾處理
長度為10個值,用逗號隔開,每個值為-12到12之間的數字,全部為0則也表示不啟用
設定視窗相關
share_cmp設定中是否顯示複製分享地址按鈕
default_skin設定中是否顯示默認皮膚項
skin_info設定中是否打開皮膚詳細信息
share_urlCMP分享地址,默認按當前CMP主程式所在位置自動生成
share_htmlCMP分享代碼,默認按share_url參數自動生成
設定相關
context_menu右鍵選單選項,0為不顯示,1為全部,其他為僅名稱
context_menu還可以在皮膚配置中設定,優先權高
shortcuts是否啟用默認快捷鍵,默認啟用
show_meta如果有讀取許可權,是否顯示媒體的meta信息,默認顯示
counter圖片形式的計數器地址,如counter=""
javascript網頁環境運行的簡單腳本,支持自動替換,如:javascript="alert('{key}');"
時間相關
timeout音樂連線逾時的時間,默認15秒
buffer_time音樂需要緩衝的時間,默認5秒
forward_time每次快進快退時長,默認3秒,需快進快退按鈕支持
最新版本已經不再支持buffer_next參數
全螢幕相關
fullscreen_max用來設定全螢幕後是否最大化視頻或歌詞,默認最大化視頻,即fullscreen_max="video"
或者設定fullscreen_max="lrc" 設定其他值將不會執行任何最大化操作,僅進行全螢幕
fullscreen_scale用來設定全螢幕時進行硬體縮放的比例,值小於等於1,不能過小,將根據客戶端顯示器解析度進行比例縮放
默認值為1,即不進行縮放,如設定為0.5,則會以全螢幕一半大小放大到全螢幕區域
以上兩個參數都可以在皮膚中的bt_fullscreen按鈕屬性中進行設定,且優先權高
歌詞相關
lrc_max是否最大化歌詞區,默認不最大化
lrc_scale最大化時當前歌詞的縮放倍數,默認為1
lrc_scalemode歌詞區縮放模式,默認為1,詳情見下面的視頻縮放模式說明
lrc_image歌詞區圖片路徑,預覽圖,一直顯示,不同於歌詞背景bg_lrc每次都更換
視頻相關
video_max是否最大化視頻區,默認不最大化
video_smoothing是否開啟視頻平滑處理,默認開啟
video_blackwhite是否開啟視頻黑白處理,默認關閉
video_highlight是否開啟視頻高亮處理,默認關閉
video_scalemode視頻縮放模式
1 在指定區域中可見,且不會發生扭曲,同時保持應用程式的原始高寬比,默認值
2 在指定區域中可見,但不嘗試保持原始高寬比。可能會發生扭曲,應用程式可能會拉伸或壓縮顯示
3 指定整個應用程式填滿指定區域,不會發生扭曲,但有可能會進行一些裁切,同時保持應用程式的原始高寬比
0 不進行縮放,即使在更改播放器視窗大小時,它仍然保持不變
video_image視頻區圖片路徑,預覽圖,一直顯示,不同於視頻背景bg_video每次都更換
頻譜相關
mixer_src用來載入外部聲音頻譜器外掛程式,默認不載入,即使用系統自帶10種聲音頻譜效果
mixer_id系統聲音頻譜器當前效果的id,默認為1,範圍0-10,分別表示CMP4默認支持的10種效果和無效果
mixer_color設定聲音頻譜器顏色,默認為a4eb0c
mixer_displace是否開啟圖形置換效果,默認不開啟
mixer_filter是否開啟圖形濾鏡效果,默認不開啟
僅MP3播放時顯示頻譜,且必須是安全沙盒內,最新CMP4還可以通過設定sound_sample開啟取樣來實現跨域顯示頻譜
單個音樂載入
src單曲地址,判斷存在單曲必須的參數
label單曲名稱
type單曲類型
lrc單曲歌詞
更多單曲參數見列表中音樂項支持的參數

媒體列表List.xml

CMP4的列表檔案是一個XML格式的樹結構檔案,用來設定所有要播放的音樂信息
列表檔案路徑由配置檔案的lists參數來指定,如果不指定,則默認為:lists="list.xml"
一個CMP4列表檔案的例子:
<list>
<m type="" src="music" lrc="" label="1,MP3音樂測試" />
<m type="" src="music/test.flv" lrc="" label="2,FLV視頻測試" />
<m type="3" src="music lrc="" label="3,WMP類型測試" />
<m type="" src="plugins/bigbg.swf" lrc="" scalemode="1" duration="10" label="4,Flash播放測試" />
<m type="" src="logo.png" lrc="" scalemode="1" duration="5" label="4,圖片播放測試" />
<m list_src="list.xml" label="子列表" />
<m label="目錄">
<m label="二級目錄">
<m label="三級目錄">
<m type="" src="music" lrc="" label="test" />
</m>
</m>
<m type="" src="music" lrc="" label="test" />
</m>
<m label="打開的目錄" opened="1">
<m type="" src="music lrc="" label="test" />
</m>
</list>

CMP4皮膚配置Skin.xml

CMP4載入完成皮膚包後,首先需要讀取皮膚包中的配置檔案,也就是skin.xml,指定名稱,
不能使用其他的皮膚配置檔案包含了所以皮膚元件的設定信息,
如果未設定則使用默認值或者不顯示該元件.
皮膚基本機構元件:
skin 根節點
option 設定視窗
pane 設定面板區域
scrollbar 設定面板的滾動條
bt_close 設定視窗的關閉按鈕
event 視窗事件,可以多個
list 列表視窗
tree 列表樹區域
search 列表搜尋框
scrollbar 列表樹的滾動條
icons 列表樹的圖示
bt_close 列表視窗關閉按鈕
event 視窗事件,可以多個
lrc 歌詞視窗
text 歌詞文本區域
kmc 卡拉ok歌詞設定,如果沒有則使用父節點text中的文本設定和kmc默認設定
bt_close 歌詞視窗關閉按鈕
event 視窗事件,可以多個
media 媒體視窗
video 視頻和頻譜效果區域
bt_close 媒體視窗關閉按鈕
event 視窗事件,可以多個
console 控制視窗
bt_play 播放和暫停按鈕
bt_stop 停止按鈕
bt_prev 上一個按鈕
bt_forward 快進按鈕
bt_rewind 快退按鈕
bt_next 下一個按鈕
bt_random 隨機播放按鈕
bt_repeat 重複播放按鈕
bt_single 單遍播放按鈕
bt_mute 靜音按鈕
volume 音量控制條
progress 播放進度條
bt_list 列表視窗開關按鈕
bt_video 媒體視窗開關按鈕
bt_lrc 歌詞視窗開關按鈕
bt_option 設定視窗開關按鈕
bt_fullscreen 全螢幕切換按鈕
bt_link 連結按鈕
title 當前播放標題
status 當前播放狀態
time 當前播放時間,包括總時間
time_position 當前時間
time_duration 總時間
number 當前播放的數字時間,可顯示倒計時
languages 語言設定

API接口

CMP4的API接口簡介
API就是應用程式接口,CMP4的API用來提供給外掛程式或頁面腳本進行調用,以達到對CMP4進行控制的目的
通過API,可以讀取或設定CMP4的相關屬性,可以調用部分方法,可以綁定一些事件進行偵聽等等
CMP4支持API的地方:
(1),全局配置中外掛程式plugins和背景backgrounds,自定義頻譜mixer_src,還包括logo,video_image,lrc_image
(2),皮膚中的5個視窗背景src
(3),列表項的視頻區背景bg_video和歌詞區背景bg_lrc
(4),JavaScript頁面腳本(部分支持),必須允許腳本通訊(allowScriptAccess="always")
其中Flash的腳本必須為ActionScript 3.0版本,所以API接口分以下兩種情況進行討論:

ActionScript3 API

通過AS3的API接口通訊,我們可以在外掛程式或皮膚中,直接獲取CMP數據並進行控制,
下面是所以支持的屬性,方法,事件
屬性attributes:
cmp:Object;返回cmp對象
config:Object;取得cmp全局配置,包含所有可讀寫的全局配置,以及其他一些配置的唯讀屬性,比如當前播放狀態state,具體有哪些可用for in語句查詢
item:Object;取得當前播放項,包含所有列表項屬性,以及其他一些播放項的唯讀屬性,具體有哪些可用for in語句查詢
list_xml:XML;取得列表xml的引用
skin_xml:XMLList;取得當前皮膚配置的引用
tools:Object;返回cmp的工具箱,主要有:base64, effects, graphics, netclient, output, states, strings, types, zoom, zip
win_list:Object;
取得5個視窗的引用,有如下5個屬性: option/list/media/console/lrc
當然還可以訪問下一級對象,如要訪問播放按鈕bt_play則可:
var bt_play = api.win_list.console. bt_play;
結構和名稱同皮膚包裡面的skin.xml皮膚配置的結構和名稱
方法methods:
addEventListener():void;
添加一個事件偵聽器,如偵聽皮膚載入完成事件:
api.addEventListener(api.key, 'skin_loaded', skinHandler);
特別不同,這裡第一個參數需傳入api.key,它是一個唯一key值,用於第三方flash移除時,銷毀其key所在所有註冊的事件
addProxy():void;
添加一個代理函式,用於src="proxy:函式名,函式參數"這樣的協定,如:
api.addProxy("youku", yk_callback);
這樣就可以用自定義的yk_callback(函式參數)方法來解析協定:src="proxy:youku,函式參數"
cookie():String讀取(cookie("name"))和寫入(cookie("name", "data"))本地存儲,類似於瀏覽器cookie,但無時間過期限制
removeEventListener():void;移除一個事件偵聽器,如:api.removeEventListener('skin_loaded', skinHandler);
sendEvent():void;
傳送一個事件,如:api.sendEvent("view_play");
如果有參數data要傳遞就是:api.sendEvent("view_play", data);
sendState():void;
傳送一個新的播放狀態,如將播放狀態改為正連線:
api.sendState("connecting");
toString():String;列印api所有屬性,方法,事件類型,方便查閱所有支持的api
事件類型events:按字母順序
api傳送api共享事件時調度
api_removeapi外掛程式移除時調用
control_fullscreen全螢幕狀態改變時調度
control_link打開連結頁面時調度
control_load音樂開始載入時調度
control_max最大化改變時調度,事件的data將傳遞是lrc_max還是video_max
control_mute靜音狀態改變時調度
control_next播放下一個時調度
control_pause暫停時調度
control_play播放時調度
control_playmode播放模式改變時調度
control_prev播放上一個時調度
control_progress進度改變時調度
control_stop停止時調度
control_volume音量改變時調度
control_win視窗打開關閉時調度
control_winbt視窗對應按鈕狀態改變時調度
item_deleted
列表項刪除時調度
事件的data將返回刪除項對象
list_change列表已經改變時調度,表示新的列表已經刷新,可用於播放等操作
list_load
使列表開始載入時調度
事件的data可以傳入新指定的配置lists進行載入
list_loaded
列表內容載入完時調度,多個列表會調度多個,每次會將載入的列表數據進行解析,然後附加到總列表,再刷新列表
事件的data可以傳入新指定的xml列表內容字元進行解析,此功能便於外載調用,直接輸入列表內容
lrc_complete
歌詞成功載入完成時調度
事件data返回當前載入成功的歌詞類型:lrc或kmc
lrc_error
歌詞載入或解析錯誤時調度
事件data將返回錯誤信息
lrc_load
使當前音樂的歌詞開始載入時調度
事件data可以傳入指定當前音樂的歌詞地址,支持lrc和kmc地址
lrc_loaded
歌詞載入完成時調度
事件data可以傳入指定的歌詞內容,支持lrc和kmc格式內容
lrc_max對歌詞最大化狀態進行切換
lrc_resize歌詞尺寸改變時調度,包括對歌詞進行縮放調整
lrc_rowchange
當前歌詞行內容改變時調度,僅支持lrc和kmc格式
事件data將傳遞返回當前行的歌詞內容
有了這個事件可以很方便的調用js api在瀏覽器標題欄或狀態欄列印當前位置的歌詞
mixer_color
對混音器顏色進行變更時調度
事件data可以傳入新的顏色值
mixer_displace
對混音器的置換效果狀態進行切換時調度
事件data可傳入true或false
mixer_filter
對混音器的濾鏡效果狀態進行切換時調度
事件data可傳入true或false
mixer_next
使用下一個混音器效果時調度
事件data可以傳入下一個頻譜效果的id
mixer_prev
使用上一個混音器效果時調度
事件data可以傳入下一個頻譜效果的id
model_change
模組改變時調度
事件data可以傳入要使用的新模組類型type
model_error
當前項發生錯誤時調度
事件data將返回錯誤信息
model_load
模組開始載入時調度
事件data可以傳入即將要播放媒體url
model_loaded當前項下載完成時調度
model_loading當前項正在下載時調度
model_meta
當前項取得meta信息時調度
事件data將返回meta數據對象
model_start當前項第一次開始播放時調度,一般此時才開始載入歌詞或開始顯示頻譜
model_state
當前項狀態改變時調度
事件data將返回當前狀態,所有支持狀態碼為:
undefined 未定義
connecting 連線中
buffering 緩衝
playing 正在播放
paused 已暫停
stopped 已停止
completed 播放完成
reconnecting 重試連線
狀態改變時,將在皮膚的狀態欄顯示當前狀態對應的說明,說明可以在皮膚配置的languages多語言裡自定義
model_time當前項播放時間改變時調度
plugins_load
外掛程式和背景開始載入時調度
事件data可傳入新指定的配置plugins(不支持backgrounds)進行載入
plugins_loadedplugins參數指定的外掛程式全部載入完成時調度(此時將第一次載入列表lists指定的檔案)
plugins_remove外掛程式和背景移除時調度
resize播放器舞台改變尺寸時調度
skin_change
針對皮膚id對皮膚進行改變時調度
事件data可以直接傳入新的皮膚id
skin_complete皮膚顯示完成時調度
skin_load
皮膚開始載入時調度
事件data可以傳入新指定的配置skins參數進行載入
skin_loaded皮膚載入完成時調度
video_blackwhite
對視頻是否啟用黑白效果濾鏡
事件data可傳入true或false
video_effect
對視頻進行顏色濾鏡(ColorMatrixFilter)改變時調度
事件data可以傳入一個英文逗號隔開的數組值,用來新建顏色矩陣濾鏡ColorMatrixFilter
video_highlight
對視頻是否啟用高亮效果濾鏡
事件data可傳入true或false
video_max對視頻最大化進行切換時調度
video_resize視頻尺寸改變時調度
video_rotation
對視頻進行旋轉時調度
事件data可以傳入旋轉的角度值,如90
video_scalemode
對視頻進行縮放模式改變時調度
事件data可以傳入支持縮放模式的id,支持0,1,2,3
video_smoothing
對視頻是否啟用平滑效果時調度
事件data可以傳入true或false
view_console對控制視窗狀態進行改變時調度
view_forward點擊快進按鈕時調度
view_fullscreen對全螢幕狀態進行改變時調度
view_item
對播放項進行改變時調度
view_link
點擊連結按鈕時調度
事件data可以傳入新指定的連結進行打開
view_list對列表視窗進行改變時調度
view_lrc對歌詞視窗進行改變時調度
view_mute點擊靜音按鈕時調度
view_next點擊下一個按鈕時調度
view_option對設定視窗進行改變時調度
view_play
點擊播放或暫停按鈕時調度
事件的data可以傳遞列表id位置,表示播放第幾個
view_prev點擊上一個按鈕時調度
view_progress
拖動播放進度條時調度
事件data可以傳入指定的進度百分值
view_random點擊隨機播放模式按鈕時調度
view_repeat點擊重複播放模式按鈕時調度
view_rewind點擊快退按鈕時調度
view_single點擊單遍播放模式按鈕時播放
view_stop點擊停止按鈕時調度
view_video對視頻視窗狀態進行改變時調度
view_volume
拖動音量條時調度
事件data可以傳入指定的volume音量值和panning平移值,用英文逗號隔開,如:1,0
具體API接口套用的例子可以見安裝包的示例:plugins/ApiExample .as 或者直接到官方外掛程式庫查看,
全部附源檔案:

JavaScript API

下列函式的調用,需要先獲取CMP所在flash的對象,也就是例子中的cmpo,獲取方法見使用範例
cmp_api();唯讀,返回CMP所有支持的API信息,包括CMP支持的所以APIvar str = cmpo.cmp_api();
config();1,讀取CMP當前所有的全局配置,返回一個Object對象,包含所有可讀寫的全局配置屬性設定,以及其他一些唯讀屬性var config = cmpo.config();
2,讀取配置的某個屬性值,具體支持哪些屬性,可用for in語句查詢
var name = cmpo.config("name");
var name = cmpo.config().name;
3,修改某個屬性的值,需傳入屬性名稱和值
注意:修改屬性僅是將值寫入配置中,需要下次有相關的刷新(如傳送事件)才套用新的值
cmpo.config("skin_id", "1");
item();1,返回當前播放項的一個Object對象,如果沒有開始任何播放,將返回null,其包含當前項的所有屬性var item = cmpo.item();
2,返回當前播放項的某個屬性值,具體支持哪些屬性,可用for in語句查詢
var src = cmpo.item("src");
var src = cmpo.item().src;
3,修改某個屬性的值(一般不用)cmpo.item("src", "test .mp3");
list_xml();1,讀取CMP當前列表內容,返回一個xml的字元串var xml = cmpo.list_xml();
2,修改列表內容,需傳入一個xml列表格式的字元串
var xml = '<list><m label="test" src="test .mp3" /></list>';
cmpo.list_xml(xml);
如果需要覆蓋原有的音樂可以設定第2個參數,表示是否附加到原有列表後面,默認為true表示附加,傳入false表示不附加,將重建列表並寫入新的列表內容cmpo.list_xml(xml, false);
list();
1,返回CMP列表數的所有信息,包括未打開的列表
將返回一個數組,數組每項都是一個音樂項對象,類型為Object
var arr = cmpo.list();
讀取一級列表的個數var num = cmpo.list().length;
返回第二個項,數組是從0開始的,第二個項索引就是1var m2 = cmpo.list()&#91;1&#93;;
如果這個音樂項是個目錄,則會有children屬性,表示它下面的子列表,也是一個數組
以此類推,這樣我們可以逐個循環得到整個列表
當然音樂項也有parent屬性,表示其父目錄對象
var m2_arr = m2.children;
2,返回某個指定的項對象
參數可以是包含唯一key值Object型的項對象,也可以直接傳入字元型key值
key值可以從上面1中的列表項對象中讀取
var item = cmpo.list(m2);
var item = cmpo.list("ITEM_1");
3,讀取項的某個屬性var src = cmpo.list("ITEM_1", "src");
如果傳入的參數是項支持的一個方法名,則執行此項的某個方法
目前支持:play播放此項, open打開此目錄, close關閉此目錄, toggle開關切換, remove移除此項
cmpo.list("ITEM_1", "play");
skin_xml();唯讀,返回當前皮膚配置檔案內容的xml字元形式var xml = cmpo.skin_xml();
skin();1,讀取皮膚元件的某個屬性值,第1個參數表示皮膚元件位置,第2個是元件屬性名
var width = cmpo.skin("console", "width");
var xywh = cmpo.skin("console .bt_play", "xywh");
2,修改元件的某個屬性,如果修改成功將返回truecmpo.skin("console .bt_play", "xywh", "0, 0, 100, 20");
sendEvent();
往CMP傳送事件
第1個參數是事件類型,所有支持類型見AS3中的所有事件類型列表
第2個參數是需要傳入的數據(可選)
cmpo.sendEvent("view_play");
cmpo.sendEvent("view_play", 2);
addEventListener();
添加一個js偵聽方法
第1個參數是事件類型,同上
第2個參數是回調函式名,字元串格式
cmpo.addEventListener("item_deleted", "del");
function del(data) { }
removeEventListener();移除一個已經註冊的js偵聽方法cmpo.removeEventListener("item_deleted", "del");
cookie();CMP的通用存儲接口,可以在本地電腦存儲並讀取已經存儲的數據,flash需啟用本地存儲(默認是10K容量),這些數據是永久儲存的,而且跨瀏覽器
cmpo.cookie("name", "CMP4");
var name = cmpo.cookie("name");

使用範例

CMP4插入到頁面:
CMP就是個flash,可以使用插入flash的通用方式嵌入到網頁中。比如:直接使用html的object標籤,或者使用流行的swfobject但是CMP4還有一些特殊功能和套用,為此提供了CMP專用嵌入腳本:cmp.js,以下就是一些CMP嵌入的例子直接在當前位置寫入,最簡方式:
<script type="text/javascript" src="/cmp.js"></script>
<script type="text/javascript">
CMP.write("cmp", "600", "400", "cmp.swf");
</script>在指定容器中插入,易於擴展:
<div id="player" style="width:600px;height:400px;"></div>
<script type="text/javascript" src="/cmp.js"></script>
<script type="text/javascript">
var htm = CMP.create("cmp", "100%", "100%", "cmp.swf");
document.getElementById("player").innerHTML = htm;
</script>插入的同時傳遞一些參數:
<div id="player" style="width:600px;height:400px;"></div>
<script type="text/javascript" src="/cmp.js"></script>
<script type="text/javascript">
var flashvars= {name : "CMP4",
skin : "skins/vplayer.zip",
lists : "mylist.xml"};
var htm = CMP.create("cmp", "100%", "100%", "cmp.swf", flashvars);
document.getElementById("player").innerHTML = htm;
</script>
其中flashvars參數也支持字元串的形式(注意值需要URL轉義),如:
var flashvars = "name=CMP4&skin=skins/vplayer.zip&lists=mylist.xml";
支持頁面JS腳本回調的更全面方式:
<div id="player" style="width:600px;height:400px;"></div>
<script type="text/javascript" src="/cmp.js"></script>
<script type="text/javascript">
var cmpo;
function cmp_loaded(key) {cmpo = CMP.get("cmp");
if (cmpo) {document.title = cmpo.config("name");
cmpo.addEventListener("model_load", "cmp_model_load");}}
function cmp_model_load(data) {document.title = cmpo.item("label");}
var flashvars = {name : "CMP4",
skin : "skins/vplayer.zip",
lists : "mylist.xml",
api: "cmp_loaded"};
var htm = CMP.create("cmp", "100%", "100%", "cmp.swf", flashvars);
document.getElementById("player").innerHTML = htm;
</script>只有回調cmp_loaded函式然後獲取CMP所在flash的cmpo對象後,才可以進行JavaScript API通訊

相關詞條

相關搜尋

熱門詞條

聯絡我們