我正在尝试在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语句来选择不同的运算符,如果可能的话。 感谢您的帮助!
答案 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
一切正常。 我认为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上运行时,这将为您提供答案。