AS3 - graphics.clear()

时间:2012-04-07 17:27:52

标签: actionscript-3 clear

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

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

感谢。乌利

1 个答案:

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