0

我从上下文菜单中调用下面的函数,图形被清除。如果调用来自另一个函数,它不会。为什么它不起作用?

          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);

谢谢。乌里

4

1 回答 1

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适用于两者,需要更多信息或代码才能知道发生了什么。

于 2012-04-07T17:38:00.440 回答