Динамическое центрирование контента во Flash довольно просто;свойства stage.stageWidth и stage.stageHeight можно использовать для определения размера холста Flash Player.Все объекты DisplayObject, прикрепленные к displayList, имеют доступ к свойству stage;Единственное, что нужно, это то, что это свойство будет нулевым в функции конструктора, так как оно еще не было добавлено в displayList;однако, мы можем легко обойти это с помощью прослушивателя событий:
public class AutoStageCenterSprite extends Sprite
{
public function AutoStageCenterSprite()
{
if (stage == null) {
// Wait to be added to Stage before we activate the Resize Listener.
addEventListener(Event.ADDED_TO_STAGE, onAddedToStageEvent);
}
else {
centerOnStage();
}
}
private function onAddedToStageEvent(event : Event) : void
{
// Now we've been added we can center ourselves...
centerOnStage();
// We will also register for Resize Events so we can update our position
// is the Stage dimensions change.
stage.addEventListener(Event.RESIZE, onResizeEvent);
}
private function centerOnStage() : void
{
x = (stage.stageWidth / 2) - (width / 2);
y = (stage.stageHeight / 2) - (height / 2);
}
private function onResizeEvent(event : Event) : void
{
// This event listener will be tripped each the Stage is resized.
if (stage != null) {
centerOnStage();
}
}
}
Следующая часть вашего вопроса посвящена тому, как добавить TextField в уравнение. Flash TextField API .Вы можете либо расширить класс TextField и добавить центрирующий код;или используйте вместо этого композицию и создайте новый экземпляр TextField внутри себя AutoStageCenterSprite.