ActionScript 3:将字符串转换为运算符?

时间:2014-07-24 05:15:20

标签: string actionscript-3 flash operators calculator

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

我在Google上找到了这个问题的答案并找到了我在下面的代码中使用的something about a JavaScript function(第1行和第4行),但我在输出Feed中的最终结果是“null”,或者“0”取决于我是将变量'answer'更改为String还是Number。

这是我到目前为止的代码:

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语句来选择不同的运算符,如果可能的话。 感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我做了一些研究,并意识到您的代码不仅仅适用于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()

但如果我在chrome:// plugins /中切换PepperFlash \ 14.0.0.145 \ pepflashplayer.dll enter image description here

一切正常。 我认为pepflashplayer.dll存在一些问题

答案 1 :(得分:0)

在您的Flash文件中:

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上运行时,这将为您提供答案。