TWaver - 专注UI技术

http://twaver.servasoft.com/
posts - 171, comments - 191, trackbacks - 0, articles - 2
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
Flash Player 11.2新加了一个非常重要的特性:支持右键,具体参见:Flash Player 11.2 Beta Features
下面是在TWaver Flex的Network中使用右键菜单的效果,等了多少年的功能终于可以轻松实现了,不用再通过html的js脚本屏蔽右键菜单

需要注意几点:
1. 从这里下载Flash Player 11.2以及playerglobal.swc文件
2. 将下载的flashplayer11-2_p3_playerglobal_122011.swc文件改名为playerglobal.swc,并放入SDK的相应目录中(Adobe Flash Builder 4.5/sdks/4.5.1/frameworks/libs/player/11.2):


3. 最好使用SDK 4.5或以上版本的SDK(SDK4.0之前不支持Flash Player 11)
4. 工程选项里Flash Player版本,需要设置为11.2
5. 工程选项里添加 -swf-version=15 编译选项

代码如下:
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
 3                xmlns:s="library://ns.adobe.com/flex/spark"
 4                xmlns:mx="library://ns.adobe.com/flex/mx"
 5                xmlns:twaver="http://www.servasoftware.com/2009/twaver/flex"
 6                applicationComplete="init()">
 7     <fx:Script>
 8         <![CDATA[
 9             import mx.collections.ArrayCollection;
10             import mx.controls.Menu;
11 
12             import twaver.*;
13 
14             private function init():void {
15                 var box:ElementBox = new ElementBox();
16 
17                 var from:Node = new Node();
18                 from.name = "From";
19                 from.location = new Point(100100);
20                 box.add(from);
21 
22                 var to:Node = new Node();
23                 to.name = "To";
24                 to.location = new Point(300300);
25                 box.add(to);
26 
27                 var link:Link = new Link(from, to);
28                 link.name = "From - To";
29                 box.add(link);
30 
31                 network.elementBox = box;
32                 network.addEventListener('rightClick', handleRighClick);
33             }
34 
35             private var menu:Menu = null;
36 
37             private function handleRighClick(e:MouseEvent):void {
38                 var element:IElement = network.getElementByMouseEvent(e);
39                 var myMenuData:ArrayCollection = new ArrayCollection([
40                     {label: element == null ? "none" : element.name}
41                 ]);
42                 if(menu != null){
43                     menu.hide();
44                 }
45                 menu = Menu.createMenu(network, myMenuData, false);
46                 var point:Point = network.globalToLocal(new Point(e.stageX, e.stageY));
47                 menu.show(point.x, point.y);
48             }
49         ]]>
50     </fx:Script>
51 
52     <twaver:Network id="network" width="100%" height="100%" backgroundAlpha="0" backgroundColor="#FF0000"/>
53 </s:Application>

完整工程见附件:TestRightClick


评论

# re: 使用Flash Player 11.2的新功能实现右键菜单  回复  更多评论   

2012-01-12 08:48 by tb
有空可以研究一下的

# re: 使用Flash Player 11.2的新功能实现右键菜单  回复  更多评论   

2012-02-01 10:22 by oxfordblue
您好,我正从事相关Flex工具平台的弹出右键弹出菜单研发,拜读了您的文章,成功弹出了Menu的右键菜单,但是发现Menu并不能监听到相关的MenuEvent.ItemClick等菜单事件,其容器类对象也同样无法检测到该类事件,请问,这种弹出菜单您的应用中是如何侦听菜单项选择事件的?

# re: 使用Flash Player 11.2的新功能实现右键菜单  回复  更多评论   

2012-02-01 12:14 by TWaver
menu = Menu.createMenu(network, myMenuData, false);
menu.addEventListener(MenuEvent.ITEM_CLICK, function(e:MenuEvent):void {
Alert.show(""+e.label);
});
可以用这个试试,不行的话可以到TWaver论坛来交流:http://twaver.servasoft.com/forum/viewtopic.php?f=14&t=2370

# re: 使用Flash Player 11.2的新功能实现右键菜单  回复  更多评论   

2012-02-05 20:35 by 长沙网络公关
不错 好东西 收藏了!~

# re: 使用Flash Player 11.2的新功能实现右键菜单  回复  更多评论   

2012-06-12 13:05 by 杭州房产
刚刚开始学习编程,先大概的看下学习资料,谢谢博主!

只有注册用户登录后才能发表评论。


网站导航: