没想到再这里也要跌跌撞撞。 这个东西我很久之前就懂了的啊!

最开始是这么写的:

			private function init():void
{
var contextMenu:ContextMenu = new ContextMenu();
var contextMenuItem:ContextMenuItem = new ContextMenuItem("复制");
contextMenuItem.addEventListener( ContextMenuEvent.MENU_ITEM_SELECT, OnGetPointPos );
contextMenu.customItems.push(contextMenuItem);
contextMenu.hideBuiltInItems();
c= contextMenu;
                  ...

  编译(没有错误),运行,右键菜单不出来!

难道是ContextMenu 没有导入的原因吗? 我记得flash.ui 等下面的 包和类 是不需要导入的啊,就想java.lang一样,

怎么搞都不行! 哎,,,

会不会是当前主程序mxml太混乱了的原因?再写一个(主要就是把内容复制过去)。 还是不行,。。

网上搜索,—— 结果是相当多,但多是不太相关———— 难道大家都没遇到这个问题?

再写一个主程序mxml,名字就叫ContextMenu,前面两个mxml报错了!——1046: 找不到类型,或者它不是编译时常数: ContextMenu

难道之前是由于“某些原因”, 不报错,现在就报错了?  不对啊,我之前清理clean过整个项目的——按照我之前的经验, 我知道flex有些奇怪的编译问题,但是不至于这么奇怪吧!

于是将ContextMenu导入。 还是不行。 写成

var contextMenu:flash.ui.ContextMenu = new flash.ui.ContextMenu()
__ 命名空间冲突?是的!!!!

哦,我想起来了! 我有一个ContextMenu的mxml,我擦!!!

改名,还是不行! 不能使用this.ContextMenu的this吗? 网上好像说要 canvas、 box 等interactive的组件才有contextmenu? 这么奇怪?

改! 还是不行、

后面(在text控件文本右键)看到flex本身就有“复制”右键选项 ———— 冲突了!

改名!
var contextMenuItem:ContextMenuItem = new ContextMenuItem("复zxfdsf制");

———————— OK!!! 内流满面、居然这样就行了!。。。。。。。

奇葩的经验教训。

另外,如果想要屏蔽flex原有的右键选项,参考http://blog.csdn.net/aijingyi/article/details/7723177

05-01 23:05