2016-08-30 4 views
0

メインのmc内にあるムービークリップボタン/テキスト入力を非表示にする効率的な方法を探しています。私のアプリケーションには "ヘルプポップアップ"があり、これを有効にすると現在のフレームでボタン/テキスト入力をオフにし、ヘルプポップアップを閉じるとボタン/テキスト入力を再度有効にする必要があります。 mainScreen mc内のすべてのボタンを無効/有効にするために、次の機能を作成しました。ただし、テキスト入力は、再度有効にした後でTabableを使用できなくなりました(100%は.swfファイルを単独で実行します。 ): また、どのキーフレームがオンになっているかに応じて、すべてのボタンを表示する必要はありません。私は手動で各フレームに必要なボタン/テキスト入力を配置していますが、それらを非表示にして非表示にするグローバル関数を作成すると、それらはすべてフレーム1にあるべきではありませんか?AS3は、ランタイム中にネストされたmcボタン/テキストインプットを表示/非表示にします。

function disableButtons():void 
{ 
mainScreen.mouseChildren = false; 
mainScreen.tabChildren = false; 
} 
function enableButton():void 
{ 
mainScreen.mouseChildren = true; 
mainScreen.tabChildren = true; 
} 

私は、アレイ内のすべてのボタンを配置して、ループを備え、それらは可視光と見えない作りのアイデアを探求してきましたが、その後どのように私は彼らがしているフレームに応じて目に見えるものであるべきものを指定しますat:

var bArray:Array = [mainScreen.b1,mainScreen.txt2]; 
//When help popup is on hide all buttons 
function hideButtons():void 
{ 
for (var i:int = 0; i<bArray.length; i++) 
{ 
    bArray[i].visible = false; 
} 
} 
//When help popup is closed only make visible the needed buttons 
function showButtons():void 
{ 
for (var i:int = 0; i<bArray.length; i++) 
{ 
    bArray[i].visible = true; //Somehow I need to specify which ones I want visible depending on the frame. 

} 
} 

私はまだ多くのことを学んでいます。おかげさまで

答えて

0

あなたは.numChildrenすることができますループのように多くの、そのフレーム位置によってオブジェクトが見えるように、それはそうあなたは

function makeInvisible() 
{ 
    for (var i:int = 0; i < mainScreen.numChildren; i++) 
     mainScreen.getChildAt (i).visible = false 
     ; 
} 

、彼らは例えばディスプレイリスト

に既にあるでしょう与えるようにしたい場合オブジェクトを非表示にしたいフレーム内でこの関数を呼び出したい

もちろん、キャッチがあります。この機能は、対応するフレームのmainScreenのすべてのオブジェクトを非表示にします。この問題を回避するには、レンダリングしたいオブジェクトのタイプを非表示にすることができます。

function makeInvisible() 
{ 
    for (var i:int = 0; i < mainScreen.numChildren; i++) 
    { 
     var child = mainScreen.getChildAt (i); 
     if (child is /*...insert type here...*/) 
      child.visible = false; 
    } 
} 
関連する問題