如何在对象类中引用时间轴上的帧

时间:2011-01-17 01:38:12

标签: flash actionscript-3 variables object movieclip

我正在使用Flash Professional cs5 / AS3

我会试着尽我所能地描述这个。我是ActionScript的新手。

所以,在我的时间轴中,我在一个代表“生命”的框架上有一个var,我在时间轴中有一些代码可以根据某些事件减少生命数量,这些代码都非常有用。

所以,现在我想创建一个构造函数类,我可以将其重用于一堆影片剪辑对象,并且我只希望这些对象能够在生命变量大于特定数字时移动。所以现在,为这些对象构建我的构造函数类,我只是想放一个if语句来查看生命是否大于某个数字,如果是,那么应该让这些对象做我想要的...但是,当我运行项目时,我得到“1120:访问未定义的财产。”生活就像我说的那样变得非常明显,就像我说的那样,除了当我为这些对象创建一个新的.as文件然后尝试引用它之外,它可以正常引用其他人。当我尝试在主项目类中建立“生命”时,我得到了同样的错误。我不知道我应该把这个var放在哪里或者我怎么做它所以我可以从一个对象类引用它。

我不确定如何说出或描述我的问题,这使得搜索教程变得困难。任何建议我都确定这必须是一项简单的任务。

3 个答案:

答案 0 :(得分:1)

您可以将“生命”变成类文件中的静态变量。您应该知道静态变量是否是一件好事存在一些争议,但是如果您的项目不是太大而且适合您,那么您可以使用它。这当然很容易。

如果在类中声明某些东西是静态的,它将变为全局(=可用于所有代码)。

基本上你在你的班级(.as)文件中写这个:

public static var lives:uint = 99;

现在,在您的时间轴代码中,您必须替换您正在使用的var。您可以通过键入类名称后跟一个点和静态var的名称来访问静态变量。示例:您的类名为“MyClass”。然后通过键入MyClass.lives

来访问var

你必须导入类文件,但我假设你知道它是如何工作的并且使用CS5自动完成(ctrl + spacebar)我认为它适合你。它会是这样的:

import myclassdirectory.MyClass;

答案 1 :(得分:0)

最佳做法是将图形资产和外部类的时间轴用于代码,这将为您提供更大的灵活性和问题,例如您提到的问题不应该太难解决。

考虑文档类中的一些参数。

 public class MyDocumentClass
 {
      //An Object to store various parameters,
      //you could also use separate vars depending on
      //your MCs requirements
      private var params:Object ;

      public function MyDocumentClass
      {
          params = {};
          params.lives = 99;

          //Create a new MovieClip instance
          var myObject:MyObject = new MyObject( params );

          //fron now on you can access the lives property in your object
          addChild( myObject );

      }
  }

答案 2 :(得分:0)

其他答案肯定是很好的解决方案,非常有帮助,第一个可能更好。但我决定用于我的情况只是在主框架上创建一个函数,其中包含减少生命的代码。然后我通过执行此操作从另一个fram运行该函数

//created a var in my movieclip that "contained" the main timeline
var main:MovieClip = MovieClip(this.parent.parent);

//then simply ran the function from the movieclip
main.decreaseLife();