-1

有人可以告诉我如何在 2 种情况下使用文本输入正确实现数学计算,如 (+,-,/,*):

1 - 更多状态
2 - 在视图中输入结果在其他

这是我的代码的一部分:

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        creationComplete="init()" currentState="State1" overlayControls="false" title="Calculator">
    <s:states>
        <s:State name="State1"/>
        <s:State name="RezultatCalculator"/>
    </s:states>
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            import spark.events.DropDownEvent;
            protected function init():void
            {
                addEventListener(TransformGestureEvent.GESTURE_SWIPE, swipeHandler);
            }
            protected function swipeHandler(event:TransformGestureEvent):void
            {
                if (event.offsetX == 1)
                {
                    navigator.pushView(CalculatorView);
                }
            }




            protected function primulcalcul_openHandler(event:DropDownEvent):void
            {
                // TODO Auto-generated method stub

            }

        ]]>
    </fx:Script>
    <s:Scroller includeIn="State1" left="3" right="3" top="0" height="547">
        <s:VGroup width="100%" height="100%" gap="24" horizontalAlign="justify" paddingTop="8"
                  verticalAlign="top">
            <s:Label id="actot" width="237" height="60" text="Active Totale" textAlign="center"
                     verticalAlign="middle"/>
            <s:TextInput id="actot_val" width="183" height="60" fontFamily="_sans" fontSize="28"
                          textAlign="center" softKeyboardType="number" />
            <s:Label id="disp" width="159" height="60" text="Disponibilitati" textAlign="center"
                     verticalAlign="middle"/>
            <s:TextInput id="disp_val" width="164" height="60" fontFamily="_sans" fontSize="28"
                         textAlign="center" softKeyboardType="number"/>
            <s:Label id="datot" width="159" height="60" text="Datorii Totale" textAlign="center"
                     verticalAlign="middle"/>
            <s:TextInput id="datot_val" width="164" height="60" fontFamily="_sans"
                         fontSize="28" textAlign="center" softKeyboardType="number"/>
            <s:Label id="caprop" width="159" height="60" fontSize="24" text="Capitaluri Proprii"
                     textAlign="center" verticalAlign="middle"/>
            <s:TextInput id="caprop_val" width="164" height="60" fontFamily="_sans" fontSize="28"
                         textAlign="center" softKeyboardType="number"/>

            <s:Button id="butstart0" width="401" height="70" label="START"
                      click="currentState='RezultatCalculator'" enabled="true"/>
        </s:VGroup>
    </s:Scroller>
    <s:CalloutButton id="primulcalcul" includeIn="RezultatCalculator" x="22" y="28" width="145"
                     height="63" label="primulcalcul" enabled="true"
                     open="primulcalcul_openHandler(event)"/>
    <s:TextArea id="Primul_val" includeIn="RezultatCalculator" x="203" y="27" width="267"
                editable="false" prompt="result"/>
    <fx:Script>
        <![CDATA[
            import flash.globalization.NumberFormatter;
            import flashx.textLayout.formats.Float;
            import flashx.textLayout.formats.Float;
            import learnmath.mathml.components.MathMLFormula;
            import learnmath.mathml.formula.layout.MathBox;
            public function MathMLFormula():void
            {
                var Primul_val:Number=new Number
                var datot:Number=new Number
                var disp:Number=new Number
                    Primul_val=0
                NumberFormatter(TextArea(Primul_val))==NumberFormatter(TextInput(datot))+NumberFormatter(TextInput(disp)); /* this is one of the examples, i tied some different values like valueOf */
            }
        ]]>
    </fx:Script>

</s:View>
4

1 回答 1

0

我有一些建议,但我不确定你的问题到底是什么。

首先,在您的 TextArea 上使用限制属性。限制属性将阻止人们输入非数字键。有点像这样:

 <s:TextInput id="datot_val" width="164" height="60" fontFamily="_sans"
                         fontSize="28" textAlign="center" softKeyboardType="number" restrict="0-9"/>

如果您在支持它的设备上使用移动应用程序,那么使用 softKeyboardType 完全有可能使这成为非问题。

您在评论中提到的代码行看起来容易出错:

NumberFormatter(TextArea(Primul_val))==NumberFormatter(TextInput(datot))+NumberFormatter(TextInput(disp));

首先,datot 和 disp 是标签;不是文本输入。它们具有硬编码的非数字值。我认为您想使用 datot_val 和 disp_val。这是文本输入。由于它们已经是输入,因此您不需要像这样投射它们。

其次,您不需要将 TextInput 转换为 NumberFormatter。您通常不会将 NumberFormatter 用作静态类,而是创建它的实例。有关NumberFormatter 的更多信息,请点击此处。

所以,我相信你的行会被改写成这样:

       Primul_val.text== String(
                                int(datot.text) + int(disp.text)
                               ); 

我添加了一些额外的行,这样括号就不会混淆。我接受 datot (AKA datot.text) 的输入并将其转换为 int。我接受 disp (disp.text) 的输入并将其转换为 int。我将两者加在一起并将它们都转换为字符串。该字符串存储在 Primul_val 的文本值中。

这有助于清除任何东西吗?

于 2012-06-12T14:53:19.147 回答