Конвертировать неявно в Actionscript 3?
Можно ли конвертировать неявно, как это? Например:
Screen.as:
public class Screen
{
protected var screen_:Sprite = new Sprite();
public function Screen() {}
}
Main.as:
public function Main()
{
Screen screen = new Screen();
addToStage(screen); // somehow return Sprite `screen_`
}
private function addToStage(child:DisplayObject)
{
stage.addChild(screen);
}
Редакция:
Так что это невозможно. Но, по крайней мере, я могу как-то переопределить addChild()
метод передачи аргумента Screen
или другие занятия?
2 ответа
Вы не сможете эффективно скрывать screen_
снаружи все, что вы делаете. Основная причина в том, что существует способ публичного перечисления списка отображения, интерфейс использует DisplayObjectContainer.numChildren
а также DisplayObjectContainer.getChildAt()
, которые оба являются публичными. Таким образом, ваше лучшее действие будет продлено Sprite
с вашим Screen
класс, отбросьте это защищенное свойство и используйте this
всякий раз, когда вам нужно сделать что-то в виде спрайта. Таким образом, вам не понадобятся какие-либо хаки, чтобы представлять свой класс, каким бы он ни был, и быть в состоянии соответствовать основам SOLID
принцип.
Конвертировать не очень. Но с помощью простого геттера вы все равно можете получить доступ к Sprite.
Screen.as:
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();
var sprite:Sprite = addToStage(screen); //your desired Sprite
}
private function addToStage(child:DisplayObject):Sprite
{
stage.addChild(screen);
return screen.sprite;
}