Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash AS3从单独类中的类调用函数_Flash_Actionscript 3_Class_Function - Fatal编程技术网

Flash AS3从单独类中的类调用函数

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

我已经四处寻找了一段时间,试图解决这个问题。出现了各种各样的想法,如dispatchEvent等,但似乎没有一种简单明了的方法

我试图做的是从一个单独的类(但与文档类在同一文件夹中)调用一个函数。 具体来说,我想从Main.as“生成”一个对象,并在该对象的类中运行一个函数。 我现在看到的片段如下:

主要是:

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