我从上下文菜单调用下面的函数并清除图形。如果呼叫来自另一个功能,则不会。 为什么它不起作用?
function removeFrame(e:Event=null):void{
holder.graphics.clear();
}
function cleanIt(e:Event=null):void{
removeFrame()
}
// NOT working by calling it like this:
cleanIt()
// It's Working if I call the function directly from the right-click menu:
menuitem1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,cleanIt);
感谢。乌利
答案 0 :(得分:1)
可以显示更多代码,该函数是如何调用的?看起来它是一个事件监听器函数,它可以改变this
的含义范围(即this.holder
)。您可以创建函数类级别:function removeFrame(e:Event=null):void{
并将其放在类中。虽然没有看到更多的代码,但很难准确说出来。
我试过fla文件
import flash.display.Sprite;
import flash.ui.ContextMenu;
import flash.ui.ContextMenuItem;
var holder:Sprite = new Sprite();
holder.graphics.beginFill(0x443311,1);
holder.graphics.drawCircle(10,10,300);
addChild(holder);
var cm:ContextMenu = new ContextMenu();
var menuitem1:ContextMenuItem = new ContextMenuItem("HAHA")
cm.customItems.push(menuitem1);
contextMenu = cm;
function removeFrame(e:Event=null):void{
holder.graphics.clear();
}
function cleanIt(e:Event=null):void{
removeFrame()
}
cleanIt();
menuitem1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,cleanIt);
和cleanIt
适用于两者,需要更多信息或代码才能知道发生了什么。