我尝试使用this和this来弄清楚如何设置一些数学类(我对任何事情都使用的sin/cos函数)。但我将其设置为导入package.class (当然是名称)。但它说“定义包:找不到类”。这让我感到困惑,我将假设我必须对文件夹做些什么。但是,我不确定应该将它放在哪个文件夹中,或者在文件夹中输入内容时要做些什么。
//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;
}
}
}发布于 2013-08-27 02:01:33
包名称由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、protected、internal、mx_internal、final)为类的每个实例创建一个对象。使用static访问修改器允许您通过ClassName.objectName访问对象,因为对象属于类,而不是父对象。要获得这些对象,您不必实例化(您将在上面的代码中注意到,我删除了您的构造函数,因为在本例中不需要它)。
注意:以下内容不一定是针对您的,但我将其包含给任何可能访问此问题的未来读者
这个blog post提供了一个相当好的标准访问修饰符的概要。对于对修饰剂了解有限的人来说,它与啤酒的比较是非常好的,也是非常容易理解的。
我还建议阅读这篇关于“静态变量”的Wikipedia article,以帮助您理解什么是静态对象以及如何使用它。
AS3严格遵循OOP (面向对象编程)和ECMAScript策略,其语法主要基于Java。由于这些原因,其他OOP或ECMA语言使用的几乎所有原则也适用于AS3。这意味着您可以通过阅读这些原则来提高您的AS3技能,即使它们不是专门针对AS3的(AS3 OOP教程在数量和质量上都相当有限,因此对于将AS3作为第一门OOP语言的人来说,很难学习这些原则)。
https://stackoverflow.com/questions/18447717
复制相似问题