smartinvoke入门系列8——Flex本地右键菜单

SmartInvoke屏蔽了Flash中的系统内置右键,添加了系统本地右键菜单功能。只需几段代码就可以创建出本地右键菜单。右键菜单主要用到以下四个类:

cn.smartinvoke.gui.control.CAction;           

菜单项信息类,封装了菜单项的id,菜单项的显示文字,菜单项的图标,菜单项类型等信息。

cn.smartinvoke.gui.control.CNativeMenuBuilder

本地菜单类,该对象表示一个菜单。他由菜单项CActionCMenuRelation组成。

cn.smartinvoke.gui.module.CActionEvent;

菜单的点击事件类,单用户点击了某个菜单项后,smartinvoke就会派发这个事件。

cn.smartinvoke.gui.CContextMenuManager

菜单管理器,用户不能单独创建该类,该类是SIApplication对象的成员,管理着当前窗口总的所有菜单对象。每个菜单都要与某个显示控件相关联,不可能独立存在,所以菜单管理器在这里还维护这菜单与显示控件的关联关系。

cn.smartinvoke.gui.module.CMenuRelation;

菜单项组织者,该对象将多个菜单项组织成一个菜单。然后通过CContextMenuManager与指定控件关联。

下面我们就来简单的实现一个本地菜单。在First_项目的FirstWin.mxmlinit方法中增加如下内容:

               //菜单的实现

               //构造三个菜单项

               var act1:CAction=new CAction("action1","菜单一");//action1为第一个菜单项的id

               var act2:CAction=new CAction("action2","第二个菜单");

               var act3:CAction=new CAction("about","关于smartinvoke");

               //构造菜单对象

               var menu:CNativeMenuBuilder=new CNativeMenuBuilder(this.shell);

               //将菜单项数组传递给菜单对象

               menu.initAction([act1,act2,act3]);

               //组织菜单项之间的关系

               var subRel:CMenuRelation=new CMenuRelation();

               subRel.actions=[act2.actionId];

               subRel.label="子菜单";

               var rel:CMenuRelation=new CMenuRelation();

               rel.actions=[act1.actionId,subRel,"-",act3.actionId];

              

               menu.initMenu(rel);

               //添加事件监听器

               menu.addListener(function (evt:CActionEvent):void{

                   this.labelInfo.text="您点击了菜单"+evt.actionId+" 菜单路径:"+evt.path;

               },this);

              

               //将当前创建的菜单,关联到当前SIApplication应用程序对象上,

               //当然你可以关联到任何InteractiveObject类型对象上

               this.contextMenuManager.addNativeMenu(this,menu);

 

当然我们也可以通过调用CNativeMenuBuilder类的addActionaddMenuItem两个方法动态的添加一菜单项到菜单对象中。

 

addAction(cAction:CAction):void       作用为添加一菜单项实体对象。

addMenuItem(actionId:String, path:String):void 将菜单项添加到菜单path所指定的显示位置上,这里的pathCMenuRelation对象的label属性加反斜杠/组成。比如在下图所示的菜单中:



 

菜单项全屏的path为空字符串,菜单项:简体中文(GB18030)path为:字符编码(C),菜单项:东亚 path为:字符编码(C)/自动检测(A)

 

也可以调用CNativeMenuBuilder类的removeMenuItem(actionId:String, path:String):void方法删除指定位置上的菜单项。

当然CNativeMenuBuilder类还有设置菜单项状态,菜单项显示文字等方法,请参考中文API

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值