Самое простое решение - сделать именно то, что вы и @felipemaia предложили - использовать SWF-загрузчик, который добавляет (или изменяет) контекстное меню своего загруженного SWF-файла.
Исходный (загруженный) SWF-файл:
import flash.ui.ContextMenu;
import flash.ui.ContextMenuItem;
var customContextMenu:ContextMenu = new ContextMenu();
// Comment in if you want to hide the default context menu items.
// customContextMenu.hideBuiltInItems();
var sampleItem:ContextMenuItem = new ContextMenuItem('Cheerio!');
customContextMenu.customItems.push(sampleItem, new ContextMenuItem('What it do?'));
this.contextMenu = customContextMenu;
И загрузчик SWF:
import flash.ui.ContextMenu;
import flash.ui.ContextMenuItem;
import flash.display.Sprite;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, modify_context_menu);
loader.load(new URLRequest('LoadedSWF.swf'));
function modify_context_menu(event:Event):void
{
var loadedSWF:Sprite = (event.target as LoaderInfo).content as Sprite;
var loadedContextMenu:ContextMenu = loadedSWF.contextMenu;
loadedContextMenu.customItems.push(new ContextMenuItem('Parent Menu Item'), new ContextMenuItem('Parent what it be?'));
this.contextMenu = loadedContextMenu;
}
Обратите внимание, что если вам нужен более точный контроль зерна, вы также можете изменить контекстное меню на отдельных подклассах InteractiveObject:
var sprite:Sprite = new Sprite();
var spriteContextMenu:ContextMenu = new ContextMenu();
spriteContextMenu.customItems.push(new ContextMenuItem('Instance specific menu item!'));
sprite.contextMenu = spriteContextMenu;