Actionscript 3 AS3全局变量

Actionscript 3 AS3全局变量,actionscript-3,flash,class,variables,global-variables,Actionscript 3,Flash,Class,Variables,Global Variables,好吧,我以前也试过一次,但我根本不记得当时是如何找到的,也不记得找到了什么来源。我正在做一个简单的flash游戏。有几个角色在移动。为了使每个关卡比另一关卡更难,我决定在不同关卡之间改变每个角色的移动速度。如果我在第1帧中的主时间轴上声明这些变量并为其赋值,它将无法按我希望的方式工作。当你进入第二级,也就是在另一帧中,速度会像它应该的那样上升。但是,当您转到下一个级别时,即具有较高移动速度的级别1,将再次处理赋值,这意味着移动速度将恢复到零 //frame 1 var speed:int = 5

好吧,我以前也试过一次,但我根本不记得当时是如何找到的,也不记得找到了什么来源。我正在做一个简单的flash游戏。有几个角色在移动。为了使每个关卡比另一关卡更难,我决定在不同关卡之间改变每个角色的移动速度。如果我在第1帧中的主时间轴上声明这些变量并为其赋值,它将无法按我希望的方式工作。当你进入第二级,也就是在另一帧中,速度会像它应该的那样上升。但是,当您转到下一个级别时,即具有较高移动速度的级别1,将再次处理赋值,这意味着移动速度将恢复到零

//frame 1
var speed:int = 5;
//level accomplished, speed++, goto frame 2

//frame 2
//level accomplished, speed++, goto frame 1
然后第1帧上的所有代码再次运行,将“速度”的值设置回5

我尝试将变量放入类中,但问题仍然是一样的,每次它返回到第1帧时,代码“var speed:speed=new speed();”再次运行,变量的值返回到speed.as文件中指定的任何值

我尝试了很多不同的组合,只在包内创建全局变量,而在任何类外创建全局变量,这样在不创建新对象的情况下,它总是全局可访问的

这是我目前的代码:

//speed.as
package
{
public var speed:int = 5;
}

//game.fla
import speed;

trace(speed);
这会引发错误“访问可能未定义的属性速度…”

正如我所说的,我尝试了许多不同的组合,并得到了许多不同的错误,谷歌搜索和挖掘了8-9个小时,这让我发疯。你们是我最后的希望,如果能给我一个简单的答案,告诉我如何使用全局变量,我将非常感激(我知道全局变量很糟糕,看到很多人在写它,尽管我真的不知道为什么),如果有其他更简单更好的解决方案,请告诉我,但我不想重写整个代码或任何东西,使其与其他解决方案兼容。我知道全局变量会帮我解决这个问题,我只是不知道如何使用它们


我需要关于如何在.as文件和.fla文件中执行操作的说明。提前谢谢

它是否在第1帧和第2帧之间循环?如果是,则使用函数来代替。你不需要佛罗里达州

//Declare variables
var speed:int = 5;

//In this case I use a button to transit into the frame. Edit the code as you wish.
btnLevel1.addEventListener(MouseEvent.CLICK, level1);

private function level1(e:MouseEvent):void
{
MovieClip(root).gotoAndStop(2);
speed++;
//Your other code for the level goes here

btnLevel2.addEventListener(MouseEvent.CLICK, level2);
}

private function level2(e:MouseEvent):void
{
MovieClip(root).gotoandStop(3);
speed++;
//Again, your other code goes here

btnLevel1.addEventListener(MouseEvent.CLICK, level1);
}

我想应该行。

我想你应该试着把它改成

package{

    public class Speed{
          public static var SPEED:int = 5;
    }

}
然后通过

trace(Speed.SPEED)

但是:这是非常肮脏的:)

好的,所以我找到了一些解决方法,不是在单独的包中使用全局变量,而是可以通过我的整个时间线访问的变量

我只是用代码做了一个额外的框架。在这个框架中,我将变量+一个frameCounter变量放在一起。在我的第一帧中,我写下以下代码:

if (frameCount == 0)
{
gotoAndStop(7);
}

因此,声明变量的代码只运行一次。可能不是最好的解决方案,但至少它能按预期工作=)

如果你给类命名为
GlobalConstants
并使用
const
关键字而不是
var
。是的,如果他对常量使用它:)他想使用全局变量。谢谢大家的输入,事情是,就像我说的,如果我把变量放在一个类中,我必须把“var-speed:speed=new-speed();”放在时间轴上的代码中才能访问它。此代码运行正常,直到游戏返回到第1帧,然后此代码再次运行,重置速度值。它从6回到5,而不是上升到7。我知道我已经让它像这样工作了:package{public var speed:int=5;}至少是这样的,但是这个确切的代码不起作用,我正在寻找正确的方法来完成它,但我似乎不能正确地完成它=(我发布的代码很好,因为您不需要实例化这个类