首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Flash cs5代码位置混乱

Flash cs5代码位置混乱
EN

Stack Overflow用户
提问于 2012-01-30 05:01:04
回答 2查看 135关注 0票数 0

每当我将以下代码放在电影的第一帧时,它都工作得很好:

代码语言:javascript
运行
复制
var strGlobal:String = "Global"; 
function scopeTest() 
{ 
    trace(strGlobal); // Global 
} 
scopeTest(); 
trace(strGlobal); // Global

但是当我移除它并将其放入我的文档类中时,它会出错:“调用一个可能未定义的方法scopeTest”“访问未定义的属性strGlobal”

我是ActionScript3的新手,想知道如何更改才能使这个简单的示例在我的主文档类中工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-30 05:12:27

在.fla文件所在的目录中,创建一个名为ScopeTest.as的文件,并定义以下类:

代码语言:javascript
运行
复制
package  {
    import flash.display.MovieClip;
    public class ScopeTest extends MovieClip  {
        var strGlobal:String = "Global"; 
        public function ScopeTest() {
            trace(strGlobal); // Global 
        }
    }
}

然后在您的.fla项目(document类)中:

然后,当你运行它的时候,你应该得到“全局”的跟踪,以确认它的工作。

票数 1
EN

Stack Overflow用户

发布于 2012-01-30 12:54:02

让我们来看看如何编写document类。

步骤1:声明package - package表示文档类相对于.fla的存储位置。如果您的document类与.fla位于同一目录中,则只需编写:

代码语言:javascript
运行
复制
package

如果它在一个文件夹中,你需要在package之后添加它。假设您的文档类位于一个名为src的目录中

代码语言:javascript
运行
复制
package src

既然已经对其进行了排序,那么您应该拥有如下内容:

代码语言:javascript
运行
复制
package
{
    //
}

您需要做的下一件事是导入需要在document类中使用的类。您将希望在文档类中扩展MovieClip,因此让我们导入它:

代码语言:javascript
运行
复制
package
{
    import flash.display.MovieClip;
}

这就是我们要介绍的示例,现在我们转到所需的第三个元素,即类声明。在本例中,它由三个部分组成:

  1. 类命名空间-可以是internal (如果只希望可以从同一包中的类访问)或public (可以从project).
  2. Your类名中的任何位置访问。
  3. 您的类将扩展的内容-在本例中为MovieClip。

总而言之,您的代码将如下所示:

代码语言:javascript
运行
复制
public class Document extends MovieClip

现在,您将拥有类似以下内容的内容,这意味着您可以开始添加propertiesmethods

代码语言:javascript
运行
复制
package
{
    import flash.display.MovieClip;

    public class Document extends MovieClip
    {
        //
    }
}

您要做的第一件事是为您的类创建一个constructor。该构造函数在创建该类的实例时调用,或者在本例中为document类时立即调用。

构造函数是通过创建一个与其包含类同名的方法来定义的。构造函数也必须为public,并且不返回任何内容。下面是您的新代码,其中包含一个空的构造函数:

代码语言:javascript
运行
复制
package
{
    import flash.display.MovieClip;

    public class Document extends MovieClip
    {
        // Constructor
        public function Document()
        {
            //
        }
    }
}

下一步是创建属于您的类的属性。在您的示例中,您使用了strGlobal:String,因此让我们添加它。属性通常直接位于类声明的下方和构造函数的上方。属性由四个部分组成:

  1. 命名空间-这决定了属性的可访问性。如果省略此参数,则默认值为internal。目前,以下是基本信息:
    • public -可从引用class.
    • private实例的任何位置访问您的属性-您的属性只能从类内访问-这在一开始似乎没有用,但最终您会发现自己主要使用this.
    • protected -您的属性可在扩展class.
    • internal的类中访问-您的属性可从同一package.

中的类访问

  1. 您的属性名称。
  2. 您的属性类型。
  3. 您的属性值。

在您的示例中,strGlobal将如下所示:

代码语言:javascript
运行
复制
public var strGlobal:String = "Global";

让我们将其添加到您的document类:

代码语言:javascript
运行
复制
package
{
    import flash.display.MovieClip;

    public class Document extends MovieClip
    {
        // Properties
        public var strGlobal:String = "Global";

        // Constructor
        public function Document()
        {
            //
        }
    }
}

接下来,您将根据您的问题创建您的方法scopeTest()。方法由5部分组成:

  1. 命名空间-方法使用与属性相同的命名空间(请参见arguments.
  2. Return type.
  3. Content.

name。

  • Method same

scopeTest()没有任何参数,也不返回任何内容,因此它将如下所示:

代码语言:javascript
运行
复制
public function scopeTest():void
{
    trace(strGlobal);
}

方法通常属于构造器下面的任何地方,所以现在让我们把它插入其中:

代码语言:javascript
运行
复制
package
{
    import flash.display.MovieClip;

    public class Document extends MovieClip
    {
        // Properties
        public var strGlobal:String = "Global";

        // Constructor
        public function Document()
        {
            //
        }

        // Output the value of strGlobal
        public function scopeTest():void
        {
            trace(strGlobal);
        }
    }
}

现在一切都准备好了,您可以从构造函数中调用scopeTest()了。因为构造函数是立即调用的,所以您应该在输出面板中看到打印的Global (假设您已经在Flash IDE中正确地链接到它)。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9056745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档