2012-04-07 9 views
0

コンテキストメニューから以下の関数を呼び出して、グラフィックスをクリアします。呼び出しが別の関数内から発生した場合、呼び出されません。 なぜそれは動作していないのですか?AS3 - graphics.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); 

ありがとうございます。 Uli

答えて

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作品にしようとしました。

+0

私は上記の関数を呼び出していないので、この関数は機能していません:function cleanIt(e:Event = null):void { removeFrame() } cleanIt() '右クリックメニュー: 'menuitem1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT、cleanIt); '違いはどこですか?ありがとう。 – Uli

+0

あなたはあなたがそれをどのように呼んでいるかを示すために質問内のコードを更新できますか? – Daniel

+0

はい。質問のコードを更新しました。 – Uli