我试图使用this和this来弄清楚如何设置一些数学类(我用于自上而下的sin / cos函数。)但是我已将它设置为导入package.class(当然是名字。)但它说“defintion package:Class not found”。这让我感到困惑,我将假设我必须对文件夹做些什么。但是我不确定在文件夹中专门输入内容的文件夹是什么。
//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代码。
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;
}
}
}
答案 0 :(得分:1)
包名称由src中的位置决定。 src/my/package/name
是my.package.name
。您在任何类顶部导入的包必须与实际包匹配,否则编译器将找不到该类。
所以...说你的文件夹中有这个结构:
src
->my
->package
->name
->ClassName
该课程将如下设置:
package my.package.name {
public class ClassName {
public function ClassName(){
//construct
}
}
}
您可以使用以下方式导入它:
import my.package.name.ClassName;
或
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
访问修饰符。
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;
}
}
}
静态访问修饰符意味着对象(在本例中为函数)仅在应用程序的任何实例中存在一次,而标准访问修饰符(public
,private
,{{1 }},protected
,internal
,mx_internal
)为类的每个实例创建一个对象。使用final
访问修饰符允许您通过static
访问对象,因为对象属于类,而不是父对象。要获得这些对象,您永远不必实例化(您将在上面的代码中注意到我删除了您的构造函数,因为在这种情况下它是不必要的。)
注意:以下内容并不一定针对您,但我会将其包含在未来可能会访问此问题的读者中
这个blog post给出了标准访问修饰符的相当好的概述。它与啤酒的比较非常好,对于对修饰语知之甚少的人来说非常容易理解。
我还建议在“静态变量”上阅读此Wikipedia article,以帮助您了解静态对象是什么以及在何处以及如何使用它。
AS3严格遵循OOP(面向对象编程)和ECMAScript策略,其语法主要基于Java。由于这些原因,其他OOP或ECMA语言使用的几乎所有原则也适用于AS3。这意味着您可以通过阅读这些原则来提高您的AS3技能,即使它们不是专门针对AS3的(AS3 OOP教程在数量和质量上都相当有限,因此对于第一次学习AS3的人来说可能很难OOP语言学习这些原理)。