Actionscript 3 为什么我的AS3代码不起作用?为什么变量不是不断增加,而是等于1?

Actionscript 3 为什么我的AS3代码不起作用?为什么变量不是不断增加,而是等于1?,actionscript-3,flashdevelop,Actionscript 3,Flashdevelop,一开始?我是ActionScript3和Flashdevelop的新手。 为什么var a的值不是不断增加,而是等于1?我哪里有错误 package { import flash.display.MovieClip; public class Main extends MovieClip { public function Main() { var a: int; a = a + 1;

一开始?我是ActionScript3和Flashdevelop的新手。 为什么var a的值不是不断增加,而是等于1?我哪里有错误

package
{

    import flash.display.MovieClip;

    public class Main extends MovieClip 
    {

        public function Main() {
           var a: int;
            a = a + 1;
            trace(a);
        }
    }
}

你是什么意思?此外,您的变量没有初始值:

var a:int = 0;
a = a + 1;
trace(a);

你是什么意思?此外,您的变量没有初始值:

var a:int = 0;
a = a + 1;
trace(a);

Main函数是主类的构造函数,因此只调用一次。因此,变量“a”只递增一次。您需要添加某种类型的循环,以使“a”更频繁地递增。

主函数是主类的构造函数,因此只调用一次。因此,变量“a”只递增一次。您需要添加某种类型的循环,以使“a”更频繁地递增。

您的变量是函数的局部变量,因此每次调用函数时,都会创建一个具有默认值的新变量(对于
int
type,它是0),然后递增,然后跟踪,从而看到1。另外,如果您计划存储交叉运行的变量,请使用
SharedObject
存储,因为如果重新启动编译的SWF,即使是全局或静态类范围的变量也不会保留其值。

您的变量是函数的局部变量,因此每次调用函数时,都会使用一个具有默认值的新变量(对于
int
类型,它是0)创建,然后递增,然后跟踪,结果是1。另外,如果您计划存储变量交叉运行,请使用
SharedObject
存储,因为如果重新启动编译的SWF,即使是全局或静态类范围的变量也不会保留其值。

以上所有答案都是正确的。下面是一种可能有效的方法k、 类似于你正在做的事情

package
{
    import flash.display.MovieClip;

    public var a:int = 0;

    public class Main extends MovieClip 
    {
        public function Main() {
            a = a + 1;
            trace(a);
            Main();
        }
    }
}
注意:这不好!它将永远持续下去,不会带来任何好处。这可能更有意义:

package
{
    import flash.display.MovieClip;

    public class Main extends MovieClip 
    {
        public function Main() {
            var a:int = 0;
            while (a < 1000)  // desired upper value here 
            { 
                trace(a); 
                a++; 
            }
        }
    }
}
包
{
导入flash.display.MovieClip;
公共类Main扩展了MovieClip
{
公共功能Main(){
变量a:int=0;
而(a<1000)//此处需要的上限值
{ 
微量元素(a);
a++;
}
}
}
}

以上所有答案都是正确的。下面是一种可能有效的方法,与您正在做的类似

package
{
    import flash.display.MovieClip;

    public var a:int = 0;

    public class Main extends MovieClip 
    {
        public function Main() {
            a = a + 1;
            trace(a);
            Main();
        }
    }
}
注意:这不好!它将永远持续下去,不会带来任何好处。这可能更有意义:

package
{
    import flash.display.MovieClip;

    public class Main extends MovieClip 
    {
        public function Main() {
            var a:int = 0;
            while (a < 1000)  // desired upper value here 
            { 
                trace(a); 
                a++; 
            }
        }
    }
}
包
{
导入flash.display.MovieClip;
公共类Main扩展了MovieClip
{
公共功能Main(){
变量a:int=0;
而(a<1000)//此处需要的上限值
{ 
微量元素(a);
a++;
}
}
}
}

一个简单类型的变量在没有初始化代码的情况下被赋予初始值。对于int,它是0,但是对于
Number
类型,它是
未定义的
,这导致迄今为止许多游戏开发人员受到严重的伤害:)感谢Vesper的澄清。如果有人一直被未初始化的变量抛出,当没有初始化代码时,简单类型的变量被赋予初始值。对于int,它是0,但是对于
Number
type,它是
未定义的
,这导致了迄今为止许多游戏开发人员的严重伤害:)感谢Vesper的澄清。如果有人一直被未初始化的变量抛出,那么有些事情做得不对。请注意,Vesper和moosefetcher下面给出的答案都是正确的。构造函数
Main()
只执行一次。如果您(以某种方式)再次调用它,那么变量
a
只是一个局部变量,每次调用函数时都会重置(将其升级为成员变量)。请注意,下面Vesper和moosefetcher的回答都是正确的。构造函数
Main()
只执行一次。如果要(以某种方式)再次调用它,变量
a
只是一个局部变量,每次调用函数时都会重置它(将其升级为成员变量)。