使用组件做东西,特点就是“快”。做课件时常用到菜单,如果时间不够,不妨拿一个menuBar来用。下面做一个简单示例,与新手共享,老鸟呢就多提宝贵意见了。效果:
点击查看效果
从组件库拖一个menubar到舞台放好,实例名:mymenu。主场景建立几个图层:
as层上代码如下:
stop()
//----------------------------------------------------------添加主菜单项目
//var mymenu:mx.controls.MenuBar;
m1 = mymenu.addMenu("课件封面");
m2 = mymenu.addMenu("重点内容");
m3 = mymenu.addMenu("课堂小节");
m4 = mymenu.addMenu("课后作业");
//---------------------------------------------------------添加二级菜单项目(下拉显示)
with(m2){
addMenuItem("内容1");
addMenuItem("内容2");
}
//----------------------------------------------------------建立侦听对象,控制下拉菜单项
侦听 = new Object();
侦听.change = function(evt) {
/*测试一些属性:
trace(mymenu.__menuBarItems);
//输出主菜单实例名数组:_level0.mymenu.mbItem200,_level0.mymenu.mbItem201,_level0.mymenu.mbItem202,_level0.mymenu.mbItem203
trace(evt.menuItem)
//输出:<menuitem label="内容2" />
trace(evt.menuItem.attributes.label)
//输出:内容2
*/
t = evt.menuItem.attributes.label;
gotoAndStop(t);
};
m2.addEventListener("change", 侦听);
//========================控制主菜单============================
//如果想直接操控一级菜单,就是用上面测试出的主菜单实例名:_level0.mymenu.mbItem200;_level0.mymenu.mbItem201;……202……
//这里主要是学习mymenu.__menuBarItems属性。
//====================================================================
_level0.mymenu.mbItem200.onRelease = function() {
gotoAndStop(this.__initText);//this.__initText是该主菜单上的文本,和要跳转到的帧标签同名。
};
_level0.mymenu.mbItem202.onRelease = function() {
gotoAndStop(this.__initText);//
};
_level0.mymenu.mbItem203.onRelease = function() {
gotoAndStop(this.__initText);//
};
实际操作还是出了问题,比如,点“课堂小节”,然后再点“课件封面”,menubar上会重复增加菜单项,如果trace(mymenu.__menuBarItems)测试,出现了_level0.mymenu.mbItem204、205……,不知怎么回事,这样每点一次,菜单就会复制一次。应该是和该组件源代码发生冲突了吧,导致menu菜单被更新?
因为测试发现问题只是在点击第一个按钮(课件封面)时才会出现,并且发现该菜单按钮上的跳转动作只要避开第一帧就没有问题,所以该菜单项上使用gotoAndStop(2)就ok。
最后把主菜单部分的代码修改一下:
mymenu.__menuBarItems[0].onRelease = function() {//mymenu.__menuBarItems这个属性就是主菜单项目的数组集合,[0]表示第一个元素。
gotoAndStop(2);
};
for (i=1; i<=mymenu.__menuBarItems.length; i++) {
mymenu.__menuBarItems.onRelease = function() {
gotoAndStop(this.__initText);
};
}
结果行了。
点击查看修改后效果
如果改善一下外观,增加一些动态切换效果,也是很不错的呢。 |