actionscript 3 - Adobe AIR ContextMenu - right clicking and roll out -
i in process of converting web-based actionscript project air. there appears subtle differences in way context menus handled between web , air versions of actionscript, , (rather large) codebase i'm converting relies on 1 of subtleties handling context menus.
for purposes of question, let's take simple air application:
package { import flash.display.nativemenu; import flash.display.nativemenuitem; import flash.display.sprite; import flash.events.mouseevent; public class test extends sprite { private var menu:nativemenu; private var menuitem:nativemenuitem; public function test() { menu = new nativemenu(); menuitem = new nativemenuitem("menu item"); menu.additem(menuitem); var s:sprite = new sprite(); s.graphics.clear(); s.graphics.beginfill(0x65ffff, 1); s.graphics.drawrect(0,0, 100, 100); s.graphics.endfill(); s.x = 10; s.y = 10; this.addchild(s); s.addeventlistener(mouseevent.right_click, rightclick); s.addeventlistener(mouseevent.roll_out, rollout); s.addeventlistener(mouseevent.roll_over, rollover); } private function rightclick(event:mouseevent):void { trace("right click"); menu.display(stage, event.stagex, event.stagey); } private function rollout(event:mouseevent):void { trace("roll out"); } private function rollover(event:mouseevent):void { trace("roll over"); } } } let's run app , right-click 4 times on blue sprite. expect receive roll on , roll out events each time before , after context menu displayed. instead receive output in debugger log:
roll on right click roll out right click right click roll on roll out right click the first click works expected. next 2 clicks not generate either roll on or roll out. , more strangely, forth click generates roll over, roll out , afterwards right click.
the reason problem because legacy code i'm converting, again written web-based actionscript, depends on roll on , roll out behavior change context menu items displayed. works in web-based version because these events triggered in same order every time user right-clicks: roll over, right click, roll out. see here, not case air.
i realize 1 approach fixing change way app works, assigns different context menus different sprites needed, i'm looking way maintain same approach legacy system minimize number of changes need make.
so question is: there way have air consistently generate roll on , roll out events in same order, before , after displaying menu, every time user right-clicks on sprite?
Comments
Post a Comment