我想将自定义右键单击添加到多个spark列表控件。 我已经尝试以下作为项目渲染器。 (根据Flex 4烹饪书)。Flex4右键单击使用ContextMenu的Spark List()
这里完全渲染代码http://pastebin.com/Kx8tJ1cY
当我右键点击星火名单,我只是得到的Adobe默认的上下文菜单。 这是我添加任何代码之前所具有的相同默认行为。
谁能告诉我如何添加正确点击,列表项Flex 4中
请和谢谢你。
我想将自定义右键单击添加到多个spark列表控件。 我已经尝试以下作为项目渲染器。 (根据Flex 4烹饪书)。Flex4右键单击使用ContextMenu的Spark List()
这里完全渲染代码http://pastebin.com/Kx8tJ1cY
当我右键点击星火名单,我只是得到的Adobe默认的上下文菜单。 这是我添加任何代码之前所具有的相同默认行为。
谁能告诉我如何添加正确点击,列表项Flex 4中
请和谢谢你。
我发现问题/解决方案。如果有Vbox或Tab Navigator,则不能使用上下文菜单。这是疯了,因为它意味着我不能做适当的相对布局或体面的可变宽度设计。
引自:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/ui/ContextMenu.html
例如,如果DataGrid控件是TabNavigator或VBox容器的子项,DataGrid控件不能拥有其自己的上下文菜单。
Christopher Huyler发布something similar(源代码available here)。来自文章:
从Google's code repository开始抓住Javascript代码。
第1步 - 设置自定义上下文菜单代码
创建Flex Builder中一个新的Flex项目。将rightclick.js和swfobject.js复制到项目的html模板文件夹中。从这里,我不得不做出一些改变......
做出这些更改后,我确认在我的应用程序中没有右键单击上下文菜单。
第2步 - 监听rightClick事件
接下来,我添加了几行,以我的应用程序的主MXML文件来监听,当我用鼠标右键单击我的机应用将被调度的ExternalInterface的事件。
private function handleCreationComplete():void
{
ExternalInterface.addCallback("rightClick", handleRightClick);
}
private function handleRightClick():void
{
Alert.show("Right Click Success!");
}
第3步 - 分派事件,以正确的对象
获取事件的主要应用是很容易的,但我们其实是想通知相应的子对象时,用鼠标右键单击事件发生。由于我没有在应用程序中使用任何双击事件,因此我决定将每个右键单击事件视为双击事件。没有两个按钮鼠标的用户(也称为Mac用户)只需双击即可获得相同的菜单,而带有两个按钮的用户只需右键单击即可。以下是我如何确保将事件分派给适当的对象。
private function handleRightClick():void
{
var objects:Array = systemManager.getObjectsUnderPoint(
new Point(mouseX,mouseY));
if (objects.length>0)
{
var object:Object = objects[objects.length-1];
var relatedObject:InteractiveObject;
if (object is InteractiveObject)
relatedObject = object as InteractiveObject;
else if (object.parent && object.parent is InteractiveObject)
relatedObject = object.parent;
var event:MouseEvent = new MouseEvent(
MouseEvent.DOUBLE_CLICK,true,false,mouseX,mouseY,
relatedObject);
object.dispatchEvent(event);
}
}
我希望这有助于!
任何本地方式来获得正确的点击工作?我真的不想使用JS? – 2011-03-10 11:22:03
@Craig Mc,据我所知,覆盖原生右键单击功能的所有解决方案都涉及到javascript。如果你不想使用JavaScript,那么总会有ContextMenus http://livedocs.adobe.com/flex/3/html/help.html?content=Menus_4.html。这会将菜单选项添加到默认的Adobe上下文菜单。 – 2011-03-10 14:38:11
嗨多数民众赞成在一个我试图使用,ContextMenus是我的问题,他们不显示。我总是得到默认的上下文菜单。 – 2011-03-11 12:33:23
什么不正确?你看不到ContextMenu? – 2011-03-07 15:48:32
@Florian F默认的上下文菜单总是显示。 @Jason Towne,当我得到一个有效的答案时,我打了接受。如果我找到自己的答案,那么我就离开它。 – 2011-03-08 06:38:13
“这根本不起作用”是不足以帮助我们的信息。什么不工作? – 2011-03-08 09:11:33