如何使用mc名称来访问变量

时间:2013-06-03 18:13:42

标签: actionscript

我有一个表格,各种按钮可供用户选择。我已经为主时间轴上的每个按钮设置了变量,这些变量用于保持值“是”或“否”,具体取决于是否选择了按钮。他们都以“不”开始。

以下是每个按钮的数组:

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名称连接到相应的变量....将字符串更改为变量名称。

1 个答案:

答案 0 :(得分:0)

我认为它会是这样的:

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

假设这些变量是全局定义的

PS。即使它可以工作(我没有访问Flash来检查这一点)你的结构有这么多的流程...只需要一个简单的改变你不需要全局变量:

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' );
    // ...
}