美好的一天,我有一个扩展为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不可能的事情:)(仅基于我的评估)
答案 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
函数的功能。