
Код AS3:
package
{
import flash.display.Graphics;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageDisplayState;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
public class Main extends Sprite
{
private var _topBar:Sprite;
private var _statusBar:Sprite;
private var _leftBar:Sprite;
private var _rightBar:Sprite;
private var _centerButton:Sprite;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
_topBar = coloredRect(0xAAAAAA, 20, 20, 10);
super.addChild(_topBar);
_statusBar = coloredRect(0xAAAAAA, 40, 40, 10);
super.addChild(_statusBar);
_leftBar = coloredRect(0xAAAAAA, 100, 40, 10);
super.addChild(_leftBar);
_rightBar = coloredRect(0xAAAAAA, 100, 40, 10);
super.addChild(_rightBar);
_centerButton = new Sprite();
_centerButton.graphics.beginFill(0xFF0000);
_centerButton.graphics.drawCircle(0, 0, 100);
super.addChild(_centerButton);
_centerButton.addEventListener(MouseEvent.CLICK, handlerClick);
redraw();
stage.addEventListener(Event.RESIZE, handlerResize);
}
private function handlerClick(e:MouseEvent):void
{
stage.displayState = stage.displayState == StageDisplayState.NORMAL ? StageDisplayState.FULL_SCREEN_INTERACTIVE : StageDisplayState.NORMAL;
}
private function handlerResize(event:Event):void
{
redraw();
}
private function redraw():void
{
var w:Number = stage.stageWidth;
var h:Number = stage.stageHeight;
//// верхняя панель всегда вверху с отступом по 5 пикселей, растягивается по длине, сохраняя высоту
_topBar.x = 5;
_topBar.y = 5;
_topBar.width = w - 10;
//// нижняя панель всегда внизу с отступом по 5 пикселей, растягивается по длине, сохраняя высоту
_statusBar.x = 5;
_statusBar.y = h - 5 - _statusBar.height;
_statusBar.width = w - 10;
//// левая панель всегда слева с отступом 5 пикселей, сохраняет ширину, меняет высоту
_leftBar.x = 5;
_leftBar.y = _topBar.y + _topBar.height + 5;
_leftBar.height = _statusBar.y -_leftBar.y - 5;
//// правая панель всегда справа с отступом 5 пикселей, сохраняет ширину, меняет высоту
_rightBar.x = w - _rightBar.width - 5;
_rightBar.y = _topBar.y + _topBar.height + 5;
_rightBar.height = _statusBar.y -_leftBar.y - 5;
//// круглую кнопку будем держать в центре
_centerButton.x = w / 2;
_centerButton.y = h / 2;
}
private function coloredRect(color:uint, width:Number, height:Number, corner:Number):Sprite
{
var s:Sprite = new Sprite();
var g:Graphics = s.graphics;
g.beginFill(color);
g.drawRoundRect(0, 0, width, height, corner);
s.scale9Grid = new Rectangle(10, 10, 2, 2);
return s;
}
}
}