複製鏈接
請複製以下鏈接發送給好友

cmp播放器

鎖定
CMP是一款免費的在線Flash音樂播放器,全稱為CenFun Music Player,簡稱為CMP。
中文名
cmp播放器
別    名
播放器

cmp播放器基本介紹

"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播放器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:[10R,10R,0,0]}"
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 語言設置

cmp播放器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:
添加一個事件偵聽器,如偵聽皮膚加載完成事件:
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,但無時間過期限制
removeEventListenerL: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將返回當前狀態,所有支持狀態碼為:
未定義
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[1];
如果這個音樂項是個目錄,則會有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);
添加一個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");

cmp播放器使用範例

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">
varflashvars= 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;
functioncmp_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通訊