Instantly share code, notes, and snippets.
Created
November 10, 2012 14:11
-
Save illuzor/4051201 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package screens | |
{ | |
import elements.Button; | |
import flash.display.Bitmap; | |
import flash.display.DisplayObject; | |
import flash.display.Sprite; | |
import flash.events.Event; | |
import tools.Bitmaps; | |
/** | |
* Класс главного меню игры. | |
* Тут отображется фон, логотип и четыре кнопки. | |
* | |
* @author illuzor | |
*/ | |
public class MainMenu extends Sprite { | |
/** кнопка "PLAY" */ | |
public var playButton:Button; | |
/** кнопка "EXIT" */ | |
public var exitButton:Button; | |
/** кнопка "SETTINGS" */ | |
public var settingButton:Button; | |
/** кнопка "SCORES" */ | |
public var scoresButton:Button; | |
/** | |
* В конструкторе просто слушаем добавление на сцену | |
*/ | |
public function MainMenu() { | |
addEventListener(Event.ADDED_TO_STAGE, adddedToStage); | |
} | |
/** | |
* Создаём и добавляем фон, логотип, кнопки | |
* | |
* @param e событие добавления на сцену | |
*/ | |
private function adddedToStage(e:Event):void { | |
removeEventListener(Event.ADDED_TO_STAGE, adddedToStage); | |
// создаём битмап фона и добавляем его на сцену | |
var background:Bitmap = Bitmaps.backgroundBitmap; | |
background.smoothing = true; | |
addChild(background); | |
placeBackground(background); // позиционируем фон | |
// создаём битмап логотипа, задаём размер относительно ширины сцены | |
// задаём положение и добавляем на сцену | |
var logo:Bitmap = Bitmaps.logoBitmap; | |
logo.smoothing = true; | |
logo.width = stage.stageWidth * .7; | |
logo.scaleY = logo.scaleX; | |
logo.x = (stage.stageWidth - logo.width) / 2; | |
logo.y = stage.stageHeight / 5; | |
addChild(logo); | |
// контейнер для кнопок для удобного позиционирования этих кнопок | |
var buttonsContainer:Sprite = new Sprite(); | |
addChild(buttonsContainer); | |
// создание кнопок "PLAY", "SETTINGS", "SCORES", "EXIT", подгонка их размеров и добавление в контейнер | |
playButton = new Button("PLAY"); | |
buttonsContainer.addChild(playButton); | |
playButton.width = stage.stageWidth / 2; | |
playButton.scaleY = playButton.scaleX; | |
settingButton = new Button("SETTINGS"); | |
buttonsContainer.addChild(settingButton); | |
settingButton.width = stage.stageWidth / 2; | |
settingButton.scaleY = settingButton.scaleX; | |
settingButton.y = buttonsContainer.height + 25; | |
scoresButton = new Button("SCORES"); | |
buttonsContainer.addChild(scoresButton); | |
scoresButton.width = stage.stageWidth / 2; | |
scoresButton.scaleY = scoresButton.scaleX; | |
scoresButton.y = buttonsContainer.height + 25; | |
exitButton = new Button("EXIT"); | |
buttonsContainer.addChild(exitButton); | |
exitButton.width = stage.stageWidth / 2; | |
exitButton.scaleY = exitButton.scaleX; | |
exitButton.y = buttonsContainer.height + 25; | |
// позиционирование контейнера с кнопками | |
buttonsContainer.x = (stage.stageWidth - buttonsContainer.width) / 2; | |
buttonsContainer.y = ((stage.stageHeight - logo.height - logo.y) - buttonsContainer.height) / 2 + logo.height + logo.y; | |
} | |
/** | |
* Эта функция делает так, что переданный ей DisplayObject заполняет собой всю сцену | |
* без изменения пропорций. В нашем случае это фоновое изображение | |
* | |
* @param scaledObject DisplayObject для подгонки | |
*/ | |
private function placeBackground(scaledObject:DisplayObject):void { | |
scaledObject.scaleX = scaledObject.scaleY = 1; | |
var scale:Number; | |
if (scaledObject.width / scaledObject.height > stage.stageWidth / stage.stageHeight){ | |
scale = stage.stageHeight / scaledObject.height; | |
} | |
else { | |
scale = stage.stageWidth / scaledObject.width; | |
} | |
scaledObject.scaleX = scaledObject.scaleY = scale; | |
scaledObject.x = (stage.stageWidth - scaledObject.width) / 2; | |
scaledObject.y = (stage.stageHeight - scaledObject.height) / 2; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment