Flash AS3从单独类中的类调用函数
我已经四处寻找了一段时间,试图解决这个问题。出现了各种各样的想法,如dispatchEvent等,但似乎没有一种简单明了的方法 我试图做的是从一个单独的类(但与文档类在同一文件夹中)调用一个函数。 具体来说,我想从Main.as“生成”一个对象,并在该对象的类中运行一个函数。 我现在看到的片段如下: 主要是:Flash AS3从单独类中的类调用函数,flash,actionscript-3,class,function,Flash,Actionscript 3,Class,Function,我已经四处寻找了一段时间,试图解决这个问题。出现了各种各样的想法,如dispatchEvent等,但似乎没有一种简单明了的方法 我试图做的是从一个单独的类(但与文档类在同一文件夹中)调用一个函数。 具体来说,我想从Main.as“生成”一个对象,并在该对象的类中运行一个函数。 我现在看到的片段如下: 主要是: var object:class_Object = new class_Object(); object.spawn(); addChild(object); spawn函数是class
var object:class_Object = new class_Object();
object.spawn();
addChild(object);
spawn函数是class_对象中的一个公共函数,但当我尝试运行它时,会出现错误:“error#1006:spawn不是函数”
如果我去掉“object.spawn();”代码,它可以很好地添加对象
我肯定错过了一些明显的东西,但我想不出是什么
谢谢
编辑
修复了这个问题,我忘了在库对象的AS链接中指定类的路径,我想我已经这样做了 您将该方法标记为
static
。这意味着它属于类本身,而不是该类的实例
要调用定义的方法,您可以说:
class\u Object.spawn()
然而,这可能不是我们想要的,但是如果没有看到实现,很难说。从定义中删除static
关键字将把它附加到一个实例,并且可以按照您描述的方式访问它
有关此主题的adobe文档,请参阅
为了回答您的评论,一个简单的方法是思考“类”,即创建“实例”的蓝图 因此,当您说
newclass\u Object()
时,您告诉“蓝图”来“构造”蓝图的新实例。在蓝图中,您可以定义应该可用于实例(或实例方法)的方法/属性。此外,还可以定义“蓝图”本身(或静态方法)可用的方法/属性
因此,使用汽车的经典示例
public class Car {
public function startEngine():void {
// This is an instance method, it will be available to
// any instance of a car, or new Car();
// Note: "this" in this context refers to the current instance of the car
// that the method is being called from
}
public static function compare(Car car1, Car car2):bool {
// This method belongs to the blueprint of a car
// Note: "this" doesn't make any sense in this context, because we
// aren't talking about a particular instance.
}
}
例如:
var mercedes:Car = new Car();
var bmw:Car = new Car();
mercedes.startEngine(); // call an instance method. notice we call it from a particular instance of a car.
Car.compare(mercedes, bmw); // call an static method. notice we call it from the class of Car.
当您从另一个类“扩展”时,您是从另一个类“借用”功能,并添加/替换您自己的功能。但是,只要您有一个实例,如果它是一个“公共”方法,那么它就可以从任何一个实例可用的地方从外部获得。我不知道这是否有助于回答您的评论。您将该方法标记为
静态。这意味着它属于类本身,而不是该类的实例
要调用定义的方法,您可以说:
class\u Object.spawn()
然而,这可能不是我们想要的,但是如果没有看到实现,很难说。从定义中删除static
关键字将把它附加到一个实例,并且可以按照您描述的方式访问它
有关此主题的adobe文档,请参阅
为了回答您的评论,一个简单的方法是思考“类”,即创建“实例”的蓝图
因此,当您说newclass\u Object()
时,您告诉“蓝图”来“构造”蓝图的新实例。在蓝图中,您可以定义应该可用于实例(或实例方法)的方法/属性。此外,还可以定义“蓝图”本身(或静态方法)可用的方法/属性
因此,使用汽车的经典示例
public class Car {
public function startEngine():void {
// This is an instance method, it will be available to
// any instance of a car, or new Car();
// Note: "this" in this context refers to the current instance of the car
// that the method is being called from
}
public static function compare(Car car1, Car car2):bool {
// This method belongs to the blueprint of a car
// Note: "this" doesn't make any sense in this context, because we
// aren't talking about a particular instance.
}
}
例如:
var mercedes:Car = new Car();
var bmw:Car = new Car();
mercedes.startEngine(); // call an instance method. notice we call it from a particular instance of a car.
Car.compare(mercedes, bmw); // call an static method. notice we call it from the class of Car.
当您从另一个类“扩展”时,您是从另一个类“借用”功能,并添加/替换您自己的功能。但是,只要您有一个实例,如果它是一个“公共”方法,那么它就可以从任何一个实例可用的地方从外部获得。我不知道这是否有助于回答您的评论。您需要将类对象中的方法公开
package my.package{
public class class_Object(){
public function class_Object(){
//constructor
}
public function spawn():void{
//spawn code
}
}
}
var classObject:class_Object = new class_Object();
classObject.spawn();
您需要将类\对象中的方法公开
package my.package{
public class class_Object(){
public function class_Object(){
//constructor
}
public function spawn():void{
//spawn code
}
}
}
var classObject:class_Object = new class_Object();
classObject.spawn();
哦,我明白了,我没有意识到静电把它纯粹附加到课堂上,谢谢你澄清了这一点。然而,如果我理解正确的话,它们是两个独立的类,而不是一个类的实例。所以我有扩展MovieClip的主类和扩展Sprite的对象类。只有当主文件扩展了对象文件时,这才有效?谢谢你的帮助!这肯定很有帮助,我现在对课程有了更好的理解,所以谢谢你!然而,我正在启动并调用我的对象类的一个实例,就像上面所做的那样,并从中调用一个方法,但是它抛出了错误。我不确定设置变量并从Enter_Frame函数中调用方法是否重要,我不应该这样做。哦,如果我像你一样尝试调用一个静态方法,我会得到错误:“1061:通过引用静态类型类调用可能未定义的方法”method“非常感谢你的耐心/脸掌!伙计,我是个白痴。在链接到我的类的库对象上,我没有指定路径(com.X.Y.class),因此它变得非常混乱。现在一切都好了,很抱歉浪费你的时间!哦,我明白了,我没有意识到静电把它纯粹附加到课堂上,谢谢你澄清了这一点。然而,如果我理解正确的话,它们是两个独立的类,而不是一个类的实例。所以我有扩展MovieClip的主类和扩展Sprite的对象类。只有当主文件扩展了对象文件时,这才有效?谢谢你的帮助!这肯定很有帮助,我现在对课程有了更好的理解,所以谢谢你!然而,我正在启动并调用我的对象类的一个实例,就像上面所做的那样,并从中调用一个方法,但是它抛出了错误。我不确定设置变量并从Enter_Frame函数中调用方法是否重要,我不应该这样做。哦,如果我像你一样尝试调用一个静态方法,我会得到错误:“1061:Ca