【问题标题】:parseInt Adding Program Always Leads to "NaN" - Flash Actionscript 1parseInt 添加程序总是导致“NaN” - Flash Actionscript 1
【发布时间】:2015-04-30 21:45:25
【问题描述】:

我在这里很新,我最近买了一本关于使用 Actionscript 1.0 进行 Flash 游戏编程的书。

让我说清楚: 本网站或其他人没有回答我的问题。

我知道你们已经收到了很多关于 Javascript 中使用的“parseInt”函数的问题,但是他们都没有为我提供答案。

我正在做一个涉及创建加法器程序的练习,用户输入两个数字,程序将它们相加。我的代码如下所示:

btnAdd.onRelease = function() { sum = parseInt(A) + parseInt(B) }

这是一个非常简单的程序,它令人气愤地拒绝工作。每次我测试它,输出都是NaN。万无一失。

A 和 B 指的是我分配给输入文本框的变量。 “sum”是指我分配给显示输出(动态)的文本框的变量。

不,我的变量没有错,我可能已经检查了六次。按钮实例名称也是正确的。

在我为这个愚蠢的简单问题寻找答案的研究中,我发现了这些地方: Research 1 Research 2

第一个网站有人提出完全相同的问题,但从未得到回答,而那个人只建议了替代编码,也返回“NaN”。

stackoverflow 上还有许多其他不相关的网站正在讨论不同情况下的 parseInt。

我从这些地方真正学到的唯一事情是 parseInt 仅在无法将字符串解析为整数时才返回 NaN,即“fsd”将返回“NaN”,但“4”应返回“4”。

我每次只输入整数,但它总是给我 NaN。

我还测试了没有 parseInt 的程序,如下所示:

btnAdd.onRelease = function() { sum = A + B }

我知道这很有效,因为输出显示两个数字彼此相邻(1 + 2 变为 12,4 + 6 变为 46 等)

这显然是由于 Flash 认为数字是字符串,而我真的希望它们是整数。这就是 parseInt 应该做的。

发生了什么事?如果您需要图片或任何更多信息,请告诉我。

【问题讨论】:

  • 您是如何在 AS1 上找到资源的?一两年前我出于好奇尝试寻找它,看起来任何手册或编译器都被完全掩埋了。可能是 AS2 吗?
  • 你用什么编译?闪光专业?如果是什么版本。出于好奇,为什么要学习 AS1?我尝试在 FlashPro CS6 中将您的示例编译为 AS1 没有问题。您确定 AB 在您的 onRelease 范围内可用吗?
  • 学习其他东西。 ActionScript 1.0 非常古老,是第一代的 hacky 脚本,它允许设计人员在他们的动画中添加一些非常基本的功能。 ActionScript 3.0 会更相关,更接近真实的编程体验,但即便如此,我也会去别处寻找。
  • 我正在使用 Adob​​e Flash Professional CS6 进行编译,但我不确定您所说的“范围”是什么意思。你能详细说明一下吗? (我是新手)我正在学习 Actionscript 1,因为它是我所拥有的书中可用的编程语言。不过,我之前用 AS3 编程过。
  • 通过范围,我的意思是您没有显示AB 的定义位置和方式。那么您确定 A 和 B 可以在您分配给 btnAdd.onRelease 的匿名函数中访问吗?在 Stack 网站上回复 cmets 时,请使用 @username ,否则将不会通知任何人您的回复。

标签: flash actionscript nan parseint


【解决方案1】:

在 Flash Professional CS6 中,使用 ActionScript 1.0 发布到 Flash Player 5,我已经成功地做到了:

var A = "1";
var B = "3";

trace(A + B);//outputs 13
sum = parseInt(A) + parseInt(B); 
trace(sum);// outputs 4

这清楚地表明parseInt() 功能正确。


查看您的 .fla 后,问题似乎在于将您的输入文本链接到变量,将 HTML 填充到所述变量中。

所以A输入数字4后的值为:

<P ALIGN="CENTER"><FONT FACE="Arial" SIZE="40" COLOR="#000000" LETTERSPACING="0" KERNING="0">4</FONT></P>

我的猜测是这是 Flash CS6 的一个错误(因为它会将输入文本字段视为 HTML 文本,即使关闭了 html 文本也是如此) - 动态文本字段似乎没有问题。

这是我为使其正常工作所做的:

  1. 为您的第一个文本字段指定实例名称txtA
  2. 为您的第二个文本字段指定实例名称txtB

将代码更改为以下内容:

btnAdd.onRelease = function() {
    sum = parseInt(txtA.text) + parseInt(txtB.text);
}

【讨论】:

  • 所以确认一下,解决这个问题的方法是将 HTML 转换为文本,然后在实例名称上使用 parseInt 而不是变量?顺便谢谢您,您的代码运行良好。
  • 是的,不是访问分配给文本字段的变量,而是直接访问文本字段对象.text属性。
猜你喜欢
  • 2012-04-28
  • 2014-11-16
  • 2017-01-01
  • 2017-01-09
  • 2014-02-02
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多