CMP4使用手册 - JavaScript接口

### CMP4 JavaScript API接口说明

下列函数的调用，需要先获取CMP所在flash的对象，也就是例子中的cmpo，获取方法见使用范例

方法名 | 说明 | 示例
--- | --- | ---
cmp_api(); | 只读，返回CMP所有支持的API信息，包括CMP支持的所有API | var 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开始的，第二个项索引就是1 | var 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，修改元件的某个属性，如果修改成功将返回true | cmpo.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");
query(); | CMP的查询接口，用于特殊查询和执行服务，暂为高阶用户补用 | cmpo.query("ws.wins.list.visible", "false"); var display = cmpo.query("ws.wins.list.visible");

关于CMP外接播放WMP的接口和应用见：http://cenfunmusicplayer.googlecode.com/svn/trunk/cmp4/developer/wmp/