CMP4 ActionScript3 API接口说明

通过AS3的API接口通讯,我们可以在插件或皮肤中,直接获取CMP数据并进行控制,下面是所以支持的属性,方法,事件
属性attributes:
cmp:Object; 返回cmp对象
config:Object; 取得cmp全局配置,包含所有可读写的全局配置,以及其他一些配置的只读属性,比如当前播放状态state,具体有哪些可用for in语句查询
item:Object; 取得当前播放项,包含所有列表项属性,以及其他一些播放项的只读属性,具体有哪些可用for in语句查询
list_xml:XML; 取得列表xml的引用
models:Object; 返回CMP当前所有支持的模块集,可用for in查询
skin_xml:XMLList; 取得当前皮肤配置的引用
tools:Object; 返回cmp的工具箱,主要有:base64, effects, graphics, netclient, output, states, strings, types, zoom, zip
具体每个工具的方法可以用for in查询,特别的output方法是输出调试信息,支持cmp跟踪器进行输出
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;

addEventListener(key:String, type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = true):void

添加一个事件侦听器,如侦听皮肤加载完成事件:

api.addEventListener(api.key, 'skin_loaded', skinHandler);

特别不同,这里第一个参数需传入api.key,它是一个唯一key值,用于第三方flash移除时,销毁其key所在所有注册的事件

addModel():String;

addModel(model:Object, type:String, exts:Array = null):String

添加一个自定义模块,CMP4默认有4个播放模块,这个方法用来支持自定义其他模块

其中model模块对象必须要有这些public方法:"load", "play", "pause", "seek", "volume", "stop", "finish"

type为模块的类型名称,exts为模块自动识别的后缀名数组列表

将返回一些成功或错误信息

一些添加自定义模块的例子:打开

addProxy():void;

addProxy(n:String, f:Function):void

添加一个代理函数,用于src="proxy:函数名,函数参数"这样的协议,如:

api.addProxy("youku", yk_callback);

这样就可以用自定义的yk_callback(函数参数)方法来解析协议:src="proxy:youku,函数参数"

应用例子可见:http://bbs.cenfun.com/thread-13590-1-1.html

cookie():String 读取(cookie("name"))和写入(cookie("name", "data"))本地存储,类似于浏览器cookie,但无时间过期限制
removeEventListener():void;

removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void

移除一个事件侦听器,如:api.removeEventListener('skin_loaded', skinHandler);

sendEvent():void;

sendEvent(type:String, data:Object = null):void

发送一个事件,如:api.sendEvent("view_play");

如果有参数data要传递就是:api.sendEvent("view_play", data);

sendState():void;

sendState(state:String):void

发送一个新的播放状态,如将播放状态改为正连接:

api.sendState("connecting");

setSoundFilter():void;

setSoundFilter(fn:Function):void

设置声音过滤函数,以实现声音变调等效果。必须启用声音取样sound_sample

showMedia():Sprite;

showMedia(clip:DisplayObject):Sprite

显示一个媒体到媒体窗口,clip可以是一个Video对象,或者一个其他显示对象

将返回添加媒体所在的容器对象

showMixer():Sprite;

showMixer(sound:Boolean = true):Sprite

是否显示频谱,sound表示如果是声音则显示,否则不显示

将返回mixer对象

toString():String; 打印api所有属性,方法,事件类型,方便查阅所有支持的api
事件类型events:按字母顺序
api 发送api共享事件时调度
api_remove api插件移除时调用
control_fullscreen 全屏状态改变时调度
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_closed

列表项关闭时调度

事件的data将返回关闭项对象

item_deleted

列表项删除时调度

事件的data将返回删除项对象

item_loaded

列表项是子列表时,加载完成时调度

事件的data将返回需要加载子列表的项

item_opened

列表项打开时调度

事件的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_complete 模块播放完成时调度
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_loaded plugins参数指定的插件全部加载完成时调度(此时将第一次加载列表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_more 点击更多按钮时调度
事件data可以传入新指定的链接进行打开
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 或者直接到官方插件库查看,全部附源文件:
https://github.com/cenfun/cmp/tree/master/cmp4/plugins