0

ユーザーが選択できるさまざまなボタンを備えたフォームがあります。ボタンが選択されたかどうかに応じて、「はい」または「いいえ」の値を保持するためのメイン タイムラインの各ボタンに、変数が既に設定されています。それらはすべて「いいえ」から始まります。

各ボタンの配列は次のとおりです。

tabs_array = ["familiars","tallers2","gestions","sortides","tallers1","medic","podoleg","dutxes","menjador"];

ボタンが選択されているかどうかの初期変数は次のとおりです。

var send_dutxes:String="no";
var send_gestions:String="no";
var send_medic:String="no";
var send_menjador:String="no";
var send_podoleg:String="no";
var send_sortides:String="no";
var send_tallers1:String="no";
var send_tallers2:String="no";
var send_familiars:String="no";

各ボタンのコードは次のとおりです。

for(var a=0; a<tabs_array.length; a++){
this.popup_contact[tabs_array[a]].gotoAndStop("off");
this.popup_contact[tabs_array[a]].addEventListener(MouseEvent.MOUSE_OVER, act_over);
this.popup_contact[tabs_array[a]].addEventListener(MouseEvent.MOUSE_OUT, act_out);
this.popup_contact[tabs_array[a]].addEventListener(MouseEvent.CLICK, toggleAct);
this.popup_contact[tabs_array[a]].buttonMode = true;
}

問題が発生している場所 (クリック状態) のコードは次のとおりです...ユーザーが選択のいずれかをクリックしたとき:

    function toggleAct(event:MouseEvent):void
{
    if (this("send_"+event.currentTarget.name)=="no")
    {
        event.currentTarget.gotoAndStop("on");
        trace("changing no to yes");
        this("send_"+event.currentTarget.name) = "yes";
    }
    else if (this("send_"+event.currentTarget.name)=="yes")
    {
        event.currentTarget.gotoAndStop("off");
        this("send_"+event.currentTarget.name) = "no";
        trace("changing yes to no");
    }
}

基本的に、クリックされた mc 名を対応する変数に接続する方法を知る必要があります....文字列を変数名に変更します。

4

1 に答える 1

0

私はそれが次のようになると思います:

var valueOfWhatYouAreLookingFor = _root['send_'+event.currentTarget.name];

これらの変数がグローバルに定義されていると仮定します

PS。それがうまくいくとしても(私はこれをチェックするためにFlashにアクセスできません)、あなたの構造には非常に多くのフローがあります...最初は1つの単純な変更だけで、グローバル変数は必要ありません:

tabs_array = ["familiars","tallers2","gestions"];
for(var a=0; a<tabs_array.length; a++){
    this.popup_contact[tabs_array[a]].gotoAndStop("off");
    this.popup_contact[tabs_array[a]].addEventListener(MouseEvent.MOUSE_OVER, act_over);
    this.popup_contact[tabs_array[a]].addEventListener(MouseEvent.MOUSE_OUT, act_out);
    this.popup_contact[tabs_array[a]].addEventListener(MouseEvent.CLICK, toggleAct);
    this.popup_contact[tabs_array[a]].buttonMode = true;
    // small addition
    this.popup_contact[tabs_array[a]].currentState = 'on';
}

function toggleAct(event:MouseEvent):void
{
    // ...
    this.currentState = ( this.currentState == 'on' ? 'off' : 'on' );
    // ...
}
于 2013-06-03T18:27:47.537 に答える