我一直在努力尝试解决这个问题。突然出现了各种各样的想法,比如dispatchEvent等,但似乎没有什么是明确,简单的方法。
我要做的是从类文件中调用一个函数(但在同一个文件夹中)。 具体来说,我想'生成'一个对象并在我的Main.as中运行该对象类中的一个函数。 我现在的片段如下:
在Main.as中:
var object:class_Object = new class_Object();
object.spawn();
addChild(object);
spawn函数是class_Object中的公共函数,但是当我尝试运行它时,我得到错误:'错误#1006:spawn不是函数' 如果我取出'object.spawn();'代码它可以很好地添加对象。
我必须遗漏一些明显的东西,但无法弄清楚是什么
由于
修改
解决了这个问题,我忘了在我的Library对象的AS链接中指定类的路径,以为我已经这样做了!
答案 0 :(得分:4)
您将该方法标记为static
。这意味着它属于类本身而不属于该类的实例。
要调用定义的方法,您会说:
class_Object.spawn()
然而,这可能不是预期的,但如果没有看到实施,很难说。从定义中删除static
关键字会将其附加到实例,并且可以按照您描述的方式进行访问。
有关此主题的adobe文档,请参阅here。
要回答你的评论,一个简单的方法来思考它是一个“类”是创建“实例”的蓝图。
所以,当你说new class_Object()
时,你告诉“蓝图”“构建”蓝图的新实例。在蓝图中,您可以定义应该可用于实例(或实例方法)的方法/属性。此外,您还可以定义“蓝图”本身(或静态方法)可用的方法/属性。
所以使用Car
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.
当你从另一个类“扩展”时,你正在“借用”另一个类的功能并添加/替换你自己的功能。但是只要你有一个实例,如果它是一个“公共”方法,那么它将从那个实例可用的外部可用。我不知道这是否有助于回答您的评论。
答案 1 :(得分:0)
你需要在class_Object public
中创建方法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();