Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.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
Apache flex ActionScript中的动态强制转换_Apache Flex_Flash_Actionscript 3_Actionscript_Air - Fatal编程技术网

Apache flex ActionScript中的动态强制转换

Apache flex ActionScript中的动态强制转换,apache-flex,flash,actionscript-3,actionscript,air,Apache Flex,Flash,Actionscript 3,Actionscript,Air,有没有办法在Actionscript中动态强制转换?下面的代码说明了我想要完成的任务: var Val:*; var S:String=SomeTextEdit.text; switch (DesiredTypeTextEdit.text) { case 'int':Val=int(S);break; case 'uint':Val=uint(S);break; case 'Strin

有没有办法在Actionscript中动态强制转换?下面的代码说明了我想要完成的任务:

        var Val:*;
        var S:String=SomeTextEdit.text;
        switch (DesiredTypeTextEdit.text) {
          case 'int':Val=int(S);break; 
          case 'uint':Val=uint(S);break; 
          case 'String':Val=String(S);break; 
          case 'Number':Val=Number(S);break; 
          ...
        }
        SomeDisplayObject[SomePropertyNameTextEdit.text]=Val;
我正在寻找类似以下伪代码的内容:

SomeDisplayObject[SomePropertyName]=eval(DesiredType)(SomeTextEdit.text);
是的,我已经意识到“eval”并没有摆在桌面上,人们也不会这样使用它


正确的方法是什么?

不太确定你到底想要什么(你的例子有点混乱),但我会尝试回答

只有在创建变量时才能键入强制转换变量。可以执行以下操作之一来更改变量的类型,但必须创建新类型的新变量

var foo:Number = 230;
var foo2:int = foo as int;

如果使用星号(*)作为变量类型,那么无论您将变量设置为什么类型,它都将成为该类型。尝试以下测试:

var foo:* = new Sprite();
trace(foo); // Traces: "[object Sprite]"
这是一种有点糟糕的做法,也是糟糕的软件设计。但有时候你得做你该做的!

您将不得不玩try-catch游戏,但谷歌搜索其中一些flash.utils有望成为您达到目的的一种手段:

getDefinitionByName(getQualifiedClassName(variable))

您可能需要将您打算使用的所有不同“类型”导入到项目的某个位置,但这应该可以让您开始了。

您可能正在寻找类似以下内容:


检查“mapToFlexObjects”功能。他基本上是从文本中阅读,并在运行时分配类

这并没有告诉我关于如何动态强制转换的任何内容,即:当强制转换的目标类型仅在运行时已知时。如果您是动态强制转换,则该类型仅在运行时已知!?!这基本上就是“动态铸造”的定义,这个问题以前被问过
getDefinitionByName(getQualifiedClassName(variable))