如果String number低于0,则调用函数?

时间:2014-01-31 15:42:00

标签: actionscript-3

我在Toolbar.as中有这段代码:

var money = 9999; 
argent.text = String(money); 
trace(money);

我该怎么说

if (money < 0){
callFunction(); 
}

非常感谢您的回答


修改

我已经尝试了一切。

这就是我的所作所为:

var money:int = 9999; 

argent.text = money.toString();
trace(money);
stageRef.addEventListener("checkingMoney", checkMoney, false, 0, true);

我已经添加了EventListner以便检查钱(因为没有任何东西在触发条件,如果之前有钱&lt; 0)。

然后:

public function checkMoney(event):void{
             var money;
            trace("checking");
        if (parseInt(money) < 0){
    trace("dangerous");  
}
}

因此功能被很好地触发(跟踪“检查”打开),但即使数字小于0(-4600),跟踪“危险”也不会出现.. 我不明白。

3 个答案:

答案 0 :(得分:1)

您需要了解数据类型的工作原理。它在所有基于OOP的语言中的工作方式类似,因此不需要特定于AS3的文章。但是,避免任何关于PHP数据类型的内容。

但是,对于你发布的内容,你做错了一些事情。

首先,每个对象(无论是变量,函数还是类),应始终具有声明的数据类型。如果你这样做,你的应用程序运行速度会稍微快一些,并且编译器警告的可能性就会降低。

所以

var money = 9999;

应该是

var money:int = 9999; // could also use Number (AS3's float) or uint

你也应该避免像String(money)这样的强硬派。这可能很慢并且可能导致错误。要将Number投射到String,您应该始终使用Number.toString(),因为这是其预期目的,我相信它已经过优化,而其他投射类型则没有。

if (money < 0)实际上是正确的。它可能一直在抛出IDE警告,因为您没有设置money的类型。如果您需要比较数字String值,则需要使用Number(var)将其强制转换为数字。请注意,将String转换为Number是您想要使用强硬转换DataType(object)而非软转换(object as DataType)的少数几次之一。

答案 1 :(得分:1)

我没有遇到问题。

所有money变量中的第1个缺少类型。

如果这里的钱是int而不是:

var money:int = 9999; 
argent.text = money.toString();
trace(money);

if (money < 0){
    callFunction(); 
}

这应该有用。

如果由于某种原因,这里的钱是String而不是:{     var money:String =“9999”;     argent.text = money;     迹(钱);

if (Number(money) < 0){
    callFunction(); 
}

答案 2 :(得分:0)

我通常不会这样做,但我发布了第二个答案,因为您的编辑与您最初发布的内容完全不同。为了将来参考,请发布相关的整个代码。你似乎最初错过了一些上下文并迫使我们解决了错误的问题(不要误解我的意思,它仍然需要修复,但这不是手头的问题)

所以你看到的是一个范围问题。基本上,在对象中声明的对象(可以是ClassFunction,循环或条件)仅在该对象内和子对象内可用。此外,在类的顶级范围内声明的所有对象必须具有访问修饰符(publicprivate,{{1} },internal等。)

所以让我们假设这个类结构:

protected

构造函数(public class ClassName { public function ClassName(); public function checkMoney(); } )中声明的对象在ClassName()中不可用。所以你需要做两件事之一:

在顶级范围内声明对象:

checkMoney()

或将对象传递给函数:

public class ClassName {
    private var money:int;
    public function ClassName(){
         money = 9999;
         checkMoney()
    }
    public function checkMoney() {
         // you now have access to money
    }
}