Авг
10

Режим Fullscreen для игр

Долго я пытался понять, как добавить в игры режим Fullscreen (на весь экран). Долго искал решение в инете, но мало что нашел. Пришлось эксперементировать самому. Итак, вот решение.

Небольшое отступление: во всех своих играх я использую программное создание маски для stage по размерам игры, дабы ничего лишнего за пределами экрана не было видно. Именно с этой маской были некоторые сложности.

Шаг 1. Чтобы узнавать, когда флэш-плеер переходит в полноэкранный режим, нам нужно отлавливать событие Event.FULLSCREEN

Шаг 2. Заранее, ещё при запуске игры и добавлении главного класса на сцену (stage), нужно посчитать коэффициент (scale), на который мы будем увеличивать или уменьшать размеры флэшки в зависимости от размера экрана компьтера (или мобильного телефона), на котором наша игра запускается.

Шаг 3. При тестировании на локальном компьютере не забудьте в настройках Flash CS для HTML указать «Template: Flash Only — Allow Full Screen», либо запускайте игру отдельно после компиляции с диска.

Вот, собственно сам код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package
{
import flash.display.*;
import flash.events.*;
import flash.ui.*;
import flash.utils.*;
import flash.media.*;
import flash.geom.*;
import flash.system.*;

public class MainClass extends MovieClip
{
/* Тут всякие переменные */ременные */

var _Gam//коэффициент масштабирования
ициент мас//координата X всей игры в fullscreen mode
; //координа//координата Y всей игры в fullscreen mode
var _FSy:Number = 0; //коор//пропишите здесь размеры вашей игры
ullscreen mode
const _myGameWidth//Создание главного класса
ите здесь размеры вашей игры
const _myGameHeight:uint = 480;

//Созд//Эту функцию можно вызывать вручную из игры, допустим при нажатии на кнопку

addEventListener(Event.ADDED_TO_STAGE, initMainClass);
}
//Эту функцию можно вызывать вручную из игры, допустим при нажатии на//Сама функция перехода в fullscreen mode
 (stage.displayState == StageDisplayState.NORMAL) stage.displayState = StageDisplayState.FULL_SCREEN
else stage.displayState = StageDisplayState.NORMAL;
}
//Сама фун// entered full screen
в fullscreen mode
function FullScreenChange(e:FullScreenEvent)
{
if (e.fullScreen) {
trace("Fullscreen ON");
this.x = _FSx;
this//Создание маски по размерам игры
e;
this.scaleY = _GameScale;
// entered full screen
} else {
trace("Fullscreen OFF");

this.x = 0;
this.y = 0;
this.scaleX = 1;
this.scaleY = 1;
}
}
function initMainClass(e:Event)
{
//Со//Обязательно добавить маску на сцену, иначе она не будет масштабироваться
new mySprite();
_tmp.graphics.beginFill(0x000000);
_tmp.graphics.drawRect(0, 0, _myGameWidth, _myGameHeight);
_tmp.graphics.endFill();
this.mask = _t//Проверяем размеры экрана и соотношение сторон для прехода в полноэкранный режим. Игра всегда будет выровнена по середине экрана
штабироваться
_tmp = null;

removeEventListener(Event.ADDED_TO_STAGE, initMainClass);
stage.addEventListener(Event.FULLSCREEN, FullScreenChange, false, 0, true);

//Проверяем размеры экрана и соотношение сторон для прехода в полноэкранный режим. Игра всегда будет выровнена по середине экрана
var ScreenWidth:int = Capabilities.s//class
ol//package



Прокомментировать