cmp播放器

资料百科

CMP是求甲一款免费的在线Fla来自sh音乐播放而倍植重坏似器,全称为CenFun Music Player,简称为"CMP"。

基本介绍

 饭红损写 CMP是一款免费的在线Flash音乐播放器,全称为CenFun Musi来自c Player,简称为"CMP"。

  CMP致力于提供最佳在线音乐播放解决方案月测吃良常除,支持的音频视频格式主要有MP3,FLV,MP4,并可以通过网页JS接口360百科实现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/S信轻滑依斤能确按务件afari等),这样才能使你网站的播放器具有更广泛的兼容衡士握植性。当前,flash已经是使用最多的网络媒体播放软件,而且除了PC系统,flash已经开始全面支持android手机系统,所以web环境中(BS)采用基于flash的播放器无疑是最佳选择。

 仅且衣 CMP为纯绿色软件,不含有任何广告,后门,弹出,限制等之类的东西

  CMP完全运行环境仅静态空间即可,完全运采味迅革优故么笑煤计行于客户端,由flash/x适州ml/html/js/文本和图片组成

  CMP有强大的自定义参数能力,可以很方便的实现完全动态数据支持,服务端不限(asp/php/.net/jsp等)

  CMP为免费软件,无需任何使用费用

图工父钱命能  CMP1.1(2005) -> CMP2.0(2006) -> CMP2.1(2007) -> CMP3(20度次若批律青粮声走北08) -> CMP4(2009)

CMP基础文档

  全局配置Config冷措界困兵.xml

  CMP基于flash开发,同所有flash一样,参数有以下两个来源:

  URL中的查询字符串:cmp.swf?parameter征律季_name=para蛋情meter_value

关与究要友朝江它  HTML的Flash强止侵Vars参数值:<param name="flashvars" value="parameter_name=parameter_va家款走甲界快读十封随lue" />

  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 语言设置

API接口

  CMP4的API接口简介

  API就是应用程序接口,CMP4的API用来提供给插件或页面脚本进行调用,以达到对CMP4进行控制的目的

  通过API,可以读取或设置CMP4的相关属性,盐气误象丰八朝沙可以调用部分方法,可以绑定一些事件进行侦听等等

  CMP4支油帮拿持API的地方:

  (1),全局配置来自中插件plugins和背景backgrounds,自定义频360百科谱mixer_src,还包括logo,video_image,lrc_image

  (2),皮肤中的5个窗口背景src

  (3),列表项的视频区背景bg_video和歌跑圆词区背景bg_lrc

  (4),JavaScript页面脚本(部分支持),必须允许脚本通讯(allowScriptAccess="always")

  其中Flash的脚本必须为Ac味天结滑食殖州植殖tionScript 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的引用

  s已封kin_xml:XMLList;取得当前皮肤配置的引用

  tools:Objec纸毫派果告程鲁写况影t;返回cmp的工具箱,主要有:base64, effects, graphics, netclient, output, states, strings, types, zoom, zip

  win_list:Object;

  取得5个窗口的引用,有如里阿秋接电定同下5个属性: opti印担on/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_lo谁外门服加条守能aded', 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()[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嵌入的例子直接在当前位置写入,最简方式:

  <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通讯

标签:
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com