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=""
時間相關
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是否開啟圖形置換效果,默認不開啟
僅MP3播放時顯示頻譜,且必須是安全沙盒內,最新CMP4還可以通過設置sound_sample開啟取樣來實現跨域顯示頻譜
單個音樂載入
src單曲地址,判斷存在單曲必須的參數
label單曲名稱
type單曲類型
lrc單曲歌詞
更多單曲參數見列表中音樂項支持的參數
媒體列表List.xml
CMP4的列表文件是一個XML格式的樹結構文件,用來設置所有要播放的音樂信息
列表文件路徑由配置文件的lists參數來指定,如果不指定,則默認為:lists="list.xml"
一個CMP4列表文件的例子:
Flash播放測試" />
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 總時間
languages 語言設置
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:函數名,函數參數"這樣的協議,如:
這樣就可以用自定義的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 = '
';
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);
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嵌入的例子直接在當前位置寫入,最簡方式:
CMP. write("cmp", "600", "400", "cmp.swf");
在指定容器中插入,易於擴展:
var htm = CMP. create("cmp", "100%", "100%", "cmp.swf");
document.getElementById(" player").innerHTML = htm;
插入的同時傳遞一些參數:
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;
其中flashvars參數也支持字元串的形式(注意值需要URL轉義),如:
var flashvars = "name=CMP4&skin=skins/vplayer.zip&lists=mylist.xml";
支持頁面JS腳本回調的更全面方式:
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;
只有回調 cmp_loaded函數然後獲取CMP所在flash的 cmpo對象后,才可以進行JavaScript API通訊