首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >as3中的自定义导入/非本地类

as3中的自定义导入/非本地类
EN

Stack Overflow用户
提问于 2013-08-26 23:31:15
回答 1查看 127关注 0票数 0

我尝试使用thisthis来弄清楚如何设置一些数学类(我对任何事情都使用的sin/cos函数)。但我将其设置为导入package.class (当然是名称)。但它说“定义包:找不到类”。这让我感到困惑,我将假设我必须对文件夹做些什么。但是,我不确定应该将它放在哪个文件夹中,或者在文件夹中输入内容时要做些什么。

代码语言:javascript
复制
//import sthreets.CustomFuncs;

private function Movement()
        {
            if(LEFT==true)
            {
                rotation=rotation-6;
            }
            if(RIGHT==true)
            {
                rotation=rotation+6;
            }
            if(UP==true)
            {
                //x=x+CustomFuncs.TopDownMove("x", rotation, 0);
                //y=y+CustomFuncs.TopDownMove("y", rotation, 0);
            }
            if(DOWN==true)
            {
                //x=x-CustomFuncs.TopDownMove("x", rotation, 0);
                //y=y-CustomFuncs.TopDownMove("y", rotation, 0);
            }
        }

注释掉的东西给了我错误,这是CustomFuncs代码。

代码语言:javascript
复制
package sthreets 
{

    public class CustomFuncs 
    {

        public function CustomFuncs() 
        {

        }

        public function TopDownMove(xy:String, rot:Number, offSet:Number):Number
        {
            if(xy=="x")
            {
                return cos(DegreesToRadions(rot)+offSet)
            }
            if(xy=="y")
            {
                return sin(DegreesToRadions(rot)+offSet)
            }
        }

        public function DegreesToRadions(rot:Number):Number
        {
            return rot*Math.PI/180;
        }
    }

}
EN

回答 1

Stack Overflow用户

发布于 2013-08-27 02:01:33

包名称由src中的位置确定。src/my/package/namemy.package.name。在任何类的顶部导入的包必须与实际的包匹配,否则编译器将找不到该类。

所以..。假设你的文件夹中有这样的结构:

代码语言:javascript
复制
src
->my
  ->package
    ->name
      ->ClassName

该类将按如下方式设置:

代码语言:javascript
复制
package my.package.name { 
    public class ClassName {
        public function ClassName(){
            //construct
        }
    }
}

您可以使用以下命令导入它:

代码语言:javascript
复制
import my.package.name.ClassName;

代码语言:javascript
复制
import my.package.name.*; //only use the wildcard if every class in that package is being used, otherwise you will include code you may or may not need to in your project

希望这有助于解释一些包和导入。

我还注意到,在使用CustomFuncs类中的函数时,就好像它们是静态的一样(就像使用Math.cos()或类似的类一样)。您的类不是以这种方式工作的。为此,您需要使用此static访问修饰符。

代码语言:javascript
复制
package sthreets 
{
    public class CustomFuncs 
    {
        public static function TopDownMove(xy:String, rot:Number, offSet:Number):Number
        {
            if(xy=="x")
            {
                return cos(DegreesToRadions(rot)+offSet)
            }
            if(xy=="y")
            {
                return sin(DegreesToRadions(rot)+offSet)
            }
        }

        public static function DegreesToRadions(rot:Number):Number
        {
            return rot*Math.PI/180;
        }
    }
}

静态访问修饰符意味着对象(在本例中是函数)在应用程序的任何实例中只存在一次,而标准访问修饰符(publicprivateprotectedinternalmx_internalfinal)为类的每个实例创建一个对象。使用static访问修改器允许您通过ClassName.objectName访问对象,因为对象属于类,而不是父对象。要获得这些对象,您不必实例化(您将在上面的代码中注意到,我删除了您的构造函数,因为在本例中不需要它)。

注意:以下内容不一定是针对您的,但我将其包含给任何可能访问此问题的未来读者

这个blog post提供了一个相当好的标准访问修饰符的概要。对于对修饰剂了解有限的人来说,它与啤酒的比较是非常好的,也是非常容易理解的。

我还建议阅读这篇关于“静态变量”的Wikipedia article,以帮助您理解什么是静态对象以及如何使用它。

AS3严格遵循OOP (面向对象编程)和ECMAScript策略,其语法主要基于Java。由于这些原因,其他OOP或ECMA语言使用的几乎所有原则也适用于AS3。这意味着您可以通过阅读这些原则来提高您的AS3技能,即使它们不是专门针对AS3的(AS3 OOP教程在数量和质量上都相当有限,因此对于将AS3作为第一门OOP语言的人来说,很难学习这些原则)。

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

https://stackoverflow.com/questions/18447717

复制
相关文章

相似问题

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