如何在ActionScript 3中访问扩展类的属性

时间:2013-12-30 14:06:44

标签: actionscript

美好的一天,我有一个扩展为MovieClip的课程 注意:myPiece是MovieClip的子类:)

package  {

public class Xspy extends myPiece{

    public function Xspy(){
         super("Espy1","Board50");
    }

}}

现在添加了这堆代码:

    protected function setCoor(myX:Number,myY:Number):void{
        this.x=myX;
        this.y=myY;
    }

我完全清楚,方法足以完成改变影片剪辑的x和y坐标的工作,但它只能在类定义中工作。

我想要的是一个外部类文件来更改此类的x和y属性。

PS。我只能想到将此功能声明为STATIC以便为我解决这个问题。但是AS3不允许这样做。

感谢提前


谢谢你:)我确实想要一个外部文件来调用setCoor函数,将访问修饰符设置为public仍然不会产生我想要的结果。

如果我错了,请纠正我,但我只能通过外部类从一个类调用静态方法。在这种情况下,public function setCoor(myX:Number,myY:Number):void无法访问我的其他类,因为它不是静态的。

每当我将函数更改为静态函数时,错误就像我无法使用静态函数更改x和y属性。在我看来,我试图做一些使用AS3不可能的事情:)(仅基于我的评估)


1 个答案:

答案 0 :(得分:0)

由于Xspy扩展了myPiece,它扩展了MovieClip,任何类都可以改变Xspy的x和y属性。

但是,如果您要键入的内容是“我希望外部类文件调用setCoor函数来更改此类的x和y属性”,那么您必须更改函数声明为public而不是protected,因为protected函数和变量只能由子类访问。

public function setCoor(myX:Number,myY:Number):void{
    this.x=myX;
    this.y=myY;
}

只是旁注,如果你正在编写这个函数来简化代码行,那很好,不是我会做的事情,因为它实际上没有必要,并且为你的应用程序增加了一点点开销,因为它的x和y属性MovieClip类已经公开,并且可以访问有关MovieClip的任何内容。现在,如果您计划在setCoor函数中执行一些额外的功能,这是有道理的;但是,我想对此提出一个警告,因为x和y属性是公共的,如果直接访问,它将绕过你添加到setCoor函数的功能。