loader的右键菜单不响应

2010-04-06 18:39

代码
1 package
2 {
3  import com.zs.components.AbstractHumanFactory;
4  import com.zs.components.PersonFactory;
5
6 import fl.controls.Button;
7 import fl.controls.ComboBox;
8 import fl.controls.ScrollBar;
9
10 import flash.display.Loader;
11 import flash.display.LoaderInfo;
12 import flash.display.Sprite;
13 import flash.display.StageAlign;
14 import flash.display.StageQuality;
15 import flash.display.StageScaleMode;
16 import flash.events.ContextMenuEvent;
17 import flash.events.Event;
18 import flash.events.KeyboardEvent;
19 import flash.net.URLRequest;
20 import flash.ui.ContextMenu;
21 import flash.ui.ContextMenuItem;
22
23 public class FactoryMethod extends Sprite
24 {
25 private var loader:Loader;
26
27 public function FactoryMethod()
28 {
29 stage.scaleMode = StageScaleMode.NO_SCALE;
30 stage.quality = StageQuality.HIGH;
31 stage.align = StageAlign.TOP_LEFT;
32
33 var loader:Loader = new Loader();
34
35 loader.load(new URLRequest("http://showpic.51.com/CBME_Resource/51/20080514/other/200805141130322.swf"));
36
37 loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
38
39 }
40
41 private function onComplete(e:Event):void
42 {
43 var loader:Loader = (e.target as LoaderInfo).loader;
44
45 var item1:ContextMenuItem = new ContextMenuItem("上移一层");
46 item1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,moveUp);
47 var item2:ContextMenuItem = new ContextMenuItem("下移一层");
48 item2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,moveDown);
49 var item3:ContextMenuItem = new ContextMenuItem("删除场景",true);
50 item3.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,removeSence);
51 var menu:ContextMenu = new ContextMenu();
52 menu.customItems = [item1,item2,item3];
53 menu.hideBuiltInItems();
54 loader.contextMenu = menu;
55 addChild(loader);
56 }
57
58
59 private function moveUp(e:ContextMenuEvent):void
60 {
61 trace("--上移一层--");
62
63 }
64
65 private function moveDown(e:ContextMenuEvent):void
66 {
67 trace("--下移一层--");
68
69 }
70
71 private function removeSence(e:ContextMenuEvent):void
72 {
73 trace("--删除--");
74 }
75
76
77 }
78 }
79
80

如题给loader进来的swf素材加了右键菜单,奇怪的是右键菜单可以显示,但是里面的命令却很少能响应。(用来测试的素材是avm1的,不知道是不是这个影响的)

解决办法:

1.在loader来的swf上加了个透明的层,然后把右键都注册到该透明层上。

2.把swf放到容器中,然后给swf加上mouseChildren=false;

原文地址:https://www.cnblogs.com/crkay/p/1747958.html