【问题标题】:Getting NaN(Not a Number) in Adobe Flash在 Adob​​e Flash 中获取 NaN(不是数字)
【发布时间】:2015-12-30 12:59:22
【问题描述】:

我想用 AS 在 Flash 中制作一个小气体计算器,但在我在文本字段中输入任何内容之前,我的文本字段中出现错误“NaN”。任何想法问题出在哪里?提前谢谢了。这是我的动作脚本代码:

km_txt.restrict = ".0-9";
liter_txt.restrict = ".0-9";
priceliter_txt.restrict = ".0-9";
stage.addEventListener(Event.ENTER_FRAME,  calculate);

        function  calculate(param1:Event)
        {
            if (liter_txt.text != "" && km_txt.text != "")
            {
                usage_txt.text = String(100 * Number(liter_txt.text) / Number(km_txt.text));
            }

            if (liter_txt.text != "" && km_txt.text != "" && priceliter_txt.text != "")
            {
                cost_txt.text = String(Number(liter_txt.text) / Number(km_txt.text) * Number(priceliter_txt.text));
            }

            if (liter_txt.text != "" && priceliter_txt.text != "")
            {
                total_txt.text = String(Number(liter_txt.text) * Number(priceliter_txt.text));
            }

        }

【问题讨论】:

  • 你到底为什么在这里使用ENTER_FRAME Event?仅当文本字段中的 .text 属性已更改时,才有意义进行这些计算。监听文本字段的变化!

标签: actionscript-3 flash


【解决方案1】:

请确保输入文本字段的初始文本值,因为您正在检查“”的值。在你的块的顶部,写;

km_txt.text = "";
liter_txt.text = "";
priceliter_txt.text = "";

如果你在 TextFields 上监听 TextEvent.TEXT_INPUT 事件并在那里进行计算,这将是一个更好的代码。

【讨论】:

    【解决方案2】:

    您从 TextField 对象转换为 Number 几次,但此时的对象不包含任何内容,因此转换解析为 NaN:

    String(100 * Number(liter_txt.text) / Number(km_txt.text));
    

    现在尝试将 Number 和 NaN 相加/乘/除仍然会解析为 NaN。

    你需要先检查值,如果你得到 NaN,可能设置为 0,存储在变量中以使事情更容易:

    var value:Number = Number(liter_txt.text);
    if(isNaN(value))
    {
        //this is not a number so substitute with 0?
        value = 0;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 2020-03-03
      相关资源
      最近更新 更多