Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 动态变量名_Actionscript 3_Variables_Dynamic - Fatal编程技术网

Actionscript 3 动态变量名

Actionscript 3 动态变量名,actionscript-3,variables,dynamic,Actionscript 3,Variables,Dynamic,我需要创建一个变量: var numDots0:Number=0; 但当单击按钮时,变量numDots0变为numDots1,然后再次单击numDots2,依此类推。然后我需要能够获取新的变量名并在函数中使用它。这是一个非常非常奇怪的请求,但无论如何: 可以使用对象的键名来存储属性,然后更改: var obj:Object = { numDots0: 0 }; 然后,当您要更改名称时: delete obj.numDots0; obj.numDots1 = 1; 或者,为了轻松增加,您可以

我需要创建一个变量:

var numDots0:Number=0;

但当单击按钮时,变量
numDots0
变为
numDots1
,然后再次单击
numDots2
,依此类推。然后我需要能够获取新的变量名并在函数中使用它。

这是一个非常非常奇怪的请求,但无论如何:

可以使用对象的键名来存储属性,然后更改:

var obj:Object = { numDots0: 0 };
然后,当您要更改名称时:

delete obj.numDots0;
obj.numDots1 = 1;
或者,为了轻松增加,您可以使用以下方法:

var i:int = 0;
function increase():void
{
    delete obj["numDots" + i];
    obj["numDots" + (++i)] = i;
}
要访问:

trace(obj.numDotsX); // where X is the most recent variable name.

我认为这绝对没有好处或必要,因此我强烈建议您看看您正在尝试做什么,并确保它是有意义的,并且没有不同的应用程序。

我非常肯定您在试图解决的问题上走错了方向。动态变量名不是您在最佳实践手册中读到的内容

无论如何,要回答AS2中的问题,您可以使用命令eval,该命令将字符串作为ActionScript进行计算,因此您可以使用以下命令:

function onClicked(e:MouseEvent):void
{
     counter++;
     eval("var numDots" + counter +"+:Number=0;");
}
在AS3中,该命令已被删除(,因为它会导致糟糕的编码实践——就像您正在尝试做的事情一样),但是有人在AS3中实现了一个计算器:

使用此计算器,将库添加到项目中,并将以下内容添加到上面的代码段中:

function eval(expression:String):void
{
    var evaluator:com.hurlant.eval.Evaluator = new com.hurlant.eval.Evaluator();
    var bytes:ByteArray = evaluator.eval(expression);
    bytes = ByteLoader.wrapInSWF([bytes]);

    var context:LoaderContext = null
    var loader:Loader = new Loader();

    loader.loadBytes(bytes, context);
}
答案是不要做你想做的事情,而是使用数组、散列或向量。请给我们提供更多的上下文,或者您想要实现的目的的原因,以及您可能认为需要这样一个动态变量名的原因。您不应该在运行时使用evals或任何更改变量名的东西,因为编程之神会将您击倒在原地。i、 例如,您的程序将要崩溃,当它崩溃时,调试肯定会更加困难


如果你确定这就是你想做的,那么我错了,哈哈。祝你好运

我真的怀疑这是你真正需要的。更改名称的变量不会导致可读代码。你想完成什么?是的,请,背景会帮助你得到更好的建议。我相信你认为我的动作脚本不是最强的,但我会尽力更好地解释我想做什么,并发布我的代码。我有一个应用程序,允许您通过在网格上放置点并连接点来绘制形状,我想要的是将一个按钮调整到现有代码中,以允许创建新形状。@ejn有一些方法可以访问动态创建的实例,而无需将它们分配给变量,例如,您可以将它们添加到数组中,也可以从显示树中获取它们