没想到再这里也要跌跌撞撞。 这个东西我很久之前就懂了的啊!
最开始是这么写的:
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