Actionscript 3 在Actionscript 3中隐式转换?
可以这样隐式转换吗? 例如: Screen.as:Actionscript 3 在Actionscript 3中隐式转换?,actionscript-3,Actionscript 3,可以这样隐式转换吗? 例如: Screen.as: public class Screen { protected var screen_:Sprite = new Sprite(); public function Screen() {} } public class Screen { protected var screen_:Sprite = new Sprite(); public function Screen() {} public f
public class Screen
{
protected var screen_:Sprite = new Sprite();
public function Screen() {}
}
public class Screen
{
protected var screen_:Sprite = new Sprite();
public function Screen() {}
public function get sprite():Sprite{
return screen_;
}
}
Main.as:
public function Main()
{
Screen screen = new Screen();
addToStage(screen); // somehow return Sprite `screen_`
}
private function addToStage(child:DisplayObject)
{
stage.addChild(screen);
}
public function Main()
{
Screen screen = new Screen();
var sprite:Sprite = addToStage(screen); //your desired Sprite
}
private function addToStage(child:DisplayObject):Sprite
{
stage.addChild(screen);
return screen.sprite;
}
编辑:
所以这是不可能的。但至少,我可以以某种方式重写
addChild()
方法来传递Screen
或其他类的参数吗?转换,实际上不是。但是使用一个简单的getter,您仍然可以访问Sprite
Screen.as:
public class Screen
{
protected var screen_:Sprite = new Sprite();
public function Screen() {}
}
public class Screen
{
protected var screen_:Sprite = new Sprite();
public function Screen() {}
public function get sprite():Sprite{
return screen_;
}
}
Main.as:
public function Main()
{
Screen screen = new Screen();
addToStage(screen); // somehow return Sprite `screen_`
}
private function addToStage(child:DisplayObject)
{
stage.addChild(screen);
}
public function Main()
{
Screen screen = new Screen();
var sprite:Sprite = addToStage(screen); //your desired Sprite
}
private function addToStage(child:DisplayObject):Sprite
{
stage.addChild(screen);
return screen.sprite;
}
无论您做什么,您都无法有效地从外部隐藏
屏幕
。主要原因是有一种公开枚举显示列表的方法,接口使用和DisplayObjectContainer.getChildAt()
,这两种方法都是公开的。因此,您最好的操作是使用屏幕
类扩展精灵
,删除受保护的属性,并在需要作为精灵执行某些操作时使用此
。这样,您就不需要任何黑客来表示您的类,无论它是什么样的,并且能够遵守基本原则。关于您的编辑,请注意,即使是您中的任何一位也会实现addChild()
,这样屏幕
将显示在某个内容的显示列表上,通过调用getChildAt()
,某些东西仍然能够到达它——那么为什么要保护那些如果使用就会公开的东西呢?更重要的是,您的屏幕的内容将可以通过该链接访问。我已经添加了一个方法addTo(父:DisplayObjectContainer)
。你只需要像这样进入阶段
:screen.addTo(阶段)代码>。顺便说一下,我已经编辑了我的问题,问了一个小的加法问题。