Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
String 动作脚本3:将字符串转换为and运算符?_String_Actionscript 3_Flash_Operators_Calculator - Fatal编程技术网

String 动作脚本3:将字符串转换为and运算符?

String 动作脚本3:将字符串转换为and运算符?,string,actionscript-3,flash,operators,calculator,String,Actionscript 3,Flash,Operators,Calculator,我正试图在ActionScript中为一个学校项目创建一个简单的计算器程序,我正在努力找到一种简洁的方法,从这样的数组中获取一个方程:4,+,2;然后操纵它,这样就可以推导出方程的答案。问题是从等式数组中提取字符串+并将其转换为可用的运算符。此时,当按下计算器GUI上的运算符按钮时,它会将运算符作为字符串添加到公式数组中,即按下“÷”按钮将添加/到公式数组中 我在谷歌上寻找答案,发现我在下面的代码第1行和第4行中使用了,但我在输出提要中得到的结果都是null,或者0,这取决于我是将变量“answ

我正试图在ActionScript中为一个学校项目创建一个简单的计算器程序,我正在努力找到一种简洁的方法,从这样的数组中获取一个方程:4,+,2;然后操纵它,这样就可以推导出方程的答案。问题是从等式数组中提取字符串+并将其转换为可用的运算符。此时,当按下计算器GUI上的运算符按钮时,它会将运算符作为字符串添加到公式数组中,即按下“÷”按钮将添加/到公式数组中

我在谷歌上寻找答案,发现我在下面的代码第1行和第4行中使用了,但我在输出提要中得到的结果都是null,或者0,这取决于我是将变量“answer”更改为字符串还是数字

以下是我目前掌握的代码:

import flash.external.ExternalInterface;

var equationArray:Array = new Array("4","+","2");
var answer:Number = ExternalInterface.call("eval",equationArray[0] + equationArray[1] + equationArray[2]);
trace(answer);

如果可能的话,我更喜欢使用类似这样的语句,而不是编写一个长的if语句来选择不同的运算符。谢谢你的帮助

我做了一些研究,发现你的代码不仅仅在Chrome上有效。 有一个错误

SecurityError: Error #2060
   at flash.external::ExternalInterface$/call()
   at FlexTemp/preinitializeHandler()
   at FlexTemp/___FlexTemp_Application1_preinitialize()
   at flash.events::EventDispatcher/dispatchEvent()
   at mx.core::UIComponent/dispatchEvent()
   at mx.core::UIComponent/initialize()
   at spark.components::Application/initialize()
   at FlexTemp/initialize()
   at mx.managers.systemClasses::ChildManager/childAdded()
   at mx.managers.systemClasses::ChildManager/initializeTopLevelWindow()
   at mx.managers::SystemManager/initializeTopLevelWindow()
   at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::kickOff()
   at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::preloader_completeHandler()
   at flash.events::EventDispatcher/dispatchEvent()
   at mx.preloaders::Preloader/timerHandler()
   at flash.utils::Timer/tick()
但是如果我在中切换PepperFlash\14.0.0.145\PepperFlashPlayer.dllchrome://plugins/

一切正常。 我认为您的flash文件中的pepflashplayer.dll存在一些问题:

import flash.external.ExternalInterface;
import flash.text.TextField;
var equationArray:Array = new Array("4","-","8");
var answer:Number = ExternalInterface.call("myJsFunction",equationArray[0] , equationArray[1] , equationArray[2])
var tf:TextField = new TextField();
addChild(tf as TextField);
tf.text = answer.toString();
在HTML页面中输入以下内容:

    <script type="text/javascript">
        function myJsFunction(arg1,arg2,arg3){
            return eval(arg1+arg2+arg3);
        }
    </script>
这就是你想做的吗? 在你的代码中使用eval,我没有得到正确的答案。
当您在localhost/server上按上述方式运行时,这将为您提供答案。

这应该会有所帮助。A可能会有所帮助,尽管有些代码看起来非常过时。这很奇怪,但您的代码对我来说很有用。我得到了6个答案。这在某种程度上是我想要的。但我忘了提一下,我正在为Android设备制作一个flash应用程序。我是否可以将JavaScript代码放在.js文件的flash应用程序目录中,并以这种方式运行它?我现在正在尝试,但到目前为止我还不能让它工作。我现在只是想在我的电脑上运行它,不确定Android手机是否可以运行JavaScript文件……对不起,我从来没有尝试过。但是,为什么您不想为操作员使用开关???切换/案例/中断…抱歉,可能是为了避免处理数学运算符优先级!?我想让我的代码尽可能紧凑,我想这是没有必要的。谢谢你的帮助