词条 | cmp播放器 |
释义 | 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.xmlCMP基于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.xmlCMP4的列表文件是一个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.xmlCMP4加载完成皮肤包后,首先需要读取皮肤包中的配置文件,也就是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()[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"> 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通讯 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。