ActionScript 3.0 :: Can't Get ContextMenu To Work?
May 9, 2011
If I open an empty FLA and put in this code:
Code:
var cm:ContextMenu = new ContextMenu();
cm.hideBuiltInItems();
this.contextMenu = cm;
Then it works and the context menu for the empty flash file has no built in items. But if I take a project that I already have, and in the class that gets compiled's constructor I put that exact same code, it compiles fine and everything but the context menu still has all of the default items no matter where I click.
I succeed to display the menu (ContextMenu AS3 class) but associated events (ContextMenuEvent.MENU_SELECT and ContextMenuEvent.MENU_ITEM_SELECT) don't work with IE >= 8 and Chrome >= 12:
Here's the deal: I've built a filebrowser. RightClicking in the list enables you (via ContextMenu) to rename and delete files/folders, or upload your own files into a selected folder. Everything works perfect until I rightClick and select the upload link from the ContextMenu. Instead of the OS filebrowser where I would select a few files for upload.. Flash throws an error at me:
It's 'Error: Error #2176...' basically telling me, that the call to fileList.browse() can only be done by direct user interaction, for example, by clicking or hitting a key. And the for example-part is no joke, at least in the german error message.
I thought that a RightClick would qualify as a secure user interaction, but Adobe seems to differ on that one.
In a few words: RightClicking (for the ContextMenu to appear) and selecting the UPLOAD link to trigger the desired browse() method doesn't work for me. Putting a simple button on the stage to shoot the browse() call does the job, but that's not what I want.
Just compiled it with amxmlc and it gave me errors over the presence of "customItems" - nothing else at all in the entire 1500+ line AS3/flex program. I took out the customItems reference and it compiles with amxmlc just fine. Nothing about that feature 'customItems' is indicated to be anything other than active and current in the documentation. All amxmlc actually does is add a command line argument for AIR to the standard mxmlc.
So in AS2 you could add a contextMenu for the whole movie like this:
[Code]....
I have also tried just adding items to stage.contextMenu but that didn't work either. I also added a custom context menu to my Document class but that doesn't work for the whole movie. So does anyone know if there is something I can do to set the contextMenu for the whole movie?
Using contextMenu, i removed all BuiltInItems. Its working fine in IE.when i am viewing the same html file in mozilla, "Show Redraw Regions" option is still visible when i am right clicking on browser. In IE, its fine.
How will I know the right click menu is currently open? Like a contextmenu.active = true property but that doesn't exist. An alternative would be a way to check if the user just right clicked but the right click event listener is for Adobe Air only as far as I know.
I just noticed that using the context menu will take away focus fronm the application.
Here is simple example: one part is similar to the example for flash.ui.ContextMenu, the other one just performs some action on keyboard events (the keys could as well be used to move the square around)
in a flash application i have to build i would like to find out what the target of the context menu is, which gets displayed when i ctrl-click.the reason for that: i created a custom context menu, which only displays over a certain area of the Sprite it belongs to. so there seems to be something "blocking the way".
I have a DataGrid with a custom itemRenderer(Canvas) which has a context menu on its right click. I am trying to get the data of the itemRenderer. I tried to find something in event & variables. I also tried with FlexNativeMenu on RIGHT_MOUSE_CLICK. But I didn't find any way out.
I would like to add custom right clicks to a number of spark list controls. I have tried the following as an item renderer. (as per the flex 4 cook book). Full Render code here [URL] When I right click on the Spark List I simply get the Adobe Default Context menu. This is the same default behaviour I had before I added any code to this.
how I can change the X and Y positions where the ContextMenu displays. I know you can do it with the display() method, but not sure how to implement it. My code, so far:
ActionScript Code: var my_cm:ContextMenu = new ContextMenu(); my_cm.hideBuiltInItems();
i attached a custom contextmenu to a sprite. there is another sprite lying "on top" of this first one. so if i try to invoke the custom context menu of the first one, it does not show when the cursor is over the second one.
i already set the properties "mouseEnabled" and "mouseChildren" of the second one to "false"
I am using a ContextMenu for an AdvancedDataGrid in my application. I could implement the normal context menu for the grid. Now, I am planning to make the context menu dynamic.For example, if I click on a particular cell, I need to see only the items related to that cell in the Context Menu. Is there any way we can do that?
I have a Flex Library Project which has both Flex specific classes, and Air specific classes.When I reference the library in an Air project, the compiler complains about an overriding contextMenu in mx.containers.Panel, saying that the param should be of type NativeMenu (instead of ContextMenu). If I switch it over to NativeMenu then it compiles fine.
The issue is when I reference the library in a Flex Project. This time it complains that it doesn't know the type NativeMenu. If I try to change it back to ContextMenu, then I get the same error as above.I've searched google to no avail (found that someone else encountered the exact same problem: http:url.... )
I have create a custom contextMenu using AS3 and can apply that to the stage. Any movie clip I place onto the stage does not inherit the contextMenu from the stage, i.e. they display the default contextMenu.How do I apply my custom contextMenu to every child in my application?
[edit]This is a simplified version of what I have in my main.as file:
var my_menu:ContextMenu = new ContextMenu(); my_menu.hideBuiltInItems(); var my_copyright = new ContextMenuItem("Copyright - 2012");
I was adding a background image using stage.addChildAt(mc, 0);. For some reason this removes the context menu. Placing the child at 1 fixes this and allows everything to inherit the contextMenu.
Textfields currently do not dispatch paste events. When the user is using keyboard shortcuts to paste, there's a way to workaround that shortcoming by listening to various keyboard events in the textfield. Is there a way to detect the paste event when it is originated from a click on the ContextMenu?
This is probably something simple I'm missing. There are tons of tuts out there on how to setup a custom right-click menu, however, I've not seen anything on how to get the target of the right-click, not the menu item, but the object actually right-clicked...
Here's the code I'm using. In the customMenuItemHandler I need both the target menu item AND the target object that was originally clicked to open the menu.[code]...
I have a problem with the following Flash AS3-code: When I change "Delete1" to "Delete", the menu item disappears. When I call it anything else but delete, then it reappears. Why? It also occurs when I comment out hideBuiltInItems...
I am trying to defeat my psychological block with dynamically loaded fonts in AS3, and I have an annoying problem. I am creating a clock with a textfield and I am loading fonts from a SWF library: the available classes/linkages are "Arial", "ArialBold", "MyriadPro", "MyriadProBold" and "Verdana".This is the line where I get the class from the SWF, and it extracts the class correctly
Code: clock = new Clock( { fontClass: assetsLoader.getFontClass("skin", "Arial") } ); The constructor...