Откройте приложение Macromedia Flash
Создайте новый фильм. Сперва необходимо подготовить объекты, которые будут участвовать в игре.
В нижнем солое создайте фон сцены, по желанию изображение фона можно сгруппировать или преобразовать в символ клип.
В новом слое создайте изображение орудия. Преобразуйте орудие в символ-клип. Так как башня орудия будет вращаться вокруг своей оси, то точка регистрации должна находиться в центре башни:
Присвойте имя копии символа с изображением орудия (например Gun
):
Разместите орудие в нужном месте (в нашем примере – в центре экрана с точкой регистрации чуть ниже нижней границы рабочй области).
В новом слое разместите надписи со статическим текстом с пояснениями и с динамическим текстом для вывода результатов на экран. В нашем примере 7 надписей с динамичным текстом:
В палитре Параметры присвойте этим 7-ми надписям имена переменных, значения которых будут выводиться на экран. В нашем примере это:
PlDistr |
– | количество сбитых самолётов |
Pl |
– | общее количество вылетевших самолётов |
s1Distr |
– | количество потопленных кораблей |
s1 |
– | общее количество выплывших кораблей |
s2Distr |
– | количество потопленных девушек |
s2 |
– | общее количество выплывших девушек |
patron |
– | количество снарядов |
В отдельном пустом слое создайте изображение самолёта. Преобразуйте изображение самолёта в символ-клип, присвоив ему имя (например, Plane
):
Удалите из фильма клип с самолётом. Откройте библиотеку фильма, найдите в библиотеке клип Plane
и, щёлкнув правой клавишей на названии клипа, выберите пункт контекстного меню Связи...
В открывшемся окне присвойте связи Название: Plane
и установите галки в полях Экспорт для ActionScript и Экспорт в первый кадр.
Создайте символ-клип с анимацией разрушающегося самолёта (название клипа PlaneDistr
).
В последнем кадре с обломками установите alpha-прозрачность = 0 и установите действие stop();
(т. е. обломки должны исчезнуть и клип на этом остановится).
Удалите из фильма клип и в библиотеке фильма установить для него связь (см. пункт 5).
Подобным образом создайте символы клипы с изображениями плывущих объектов (в нашем примере изображение корабля и девушки):
а так же клипов с анимацией их разрушения.
Присвойте клипам имена (в нашем примере Ship1
, Ship1Distr
, Ship2
, Ship2Distr
), удалите клипы из фильма и установите для символов-клипов связи (см. п. п. 5, 6).
Создайте символ-клип с анимацией выстрела (название клипа Fire
):
В последнем кадре анимационной последовательности установить alpha-прозрачность = 0 и устанвите действие stop();
(т. е. выстрел должен исчезнуть и клип на этом остановится).
Удалите из фильма клип и в библиотеке фильма установить для него связь.
Создайте символ-клип с надписью «Игра окончена» (название клипа, например GameOver
) и установить для него связь:
Создайте символ-клип с изображением прицела (название клипа, например Target
) и установить для него связь.
Создайте новый слой, в нём будет размещаться код ActionScriptпроисходящего на экране:
//описание переменнх defeat - попадание в цель
var defeat = false;
var P1Distr = 0;
var P1 = 0;
var s1Distr = 0;
var s1 = 0;
var s2Distr = 0;
var s2 = 0;
var patron = 30;
//установка курсора мыши
Mouse.hide();
attachMovie("target", "target", 1000);
//функция загрузки клипа в зависимости от значения переменной marker
function loadObject(mark){
switch (mark){
case 1:
attachMovie("ship1", "ship1", 999);
speed = 5;
ship1._y = 170;
ship1._x = -75;
s1 += 1;
break;
case 2:
attachMovie("ship2", "ship2", 998);
speed = 3;
ship2._y = 225;
ship2._x = 635;
s2 += 1;
break;
case 3:
attachMovie("Plane", "Plane", 997);
speed = 9;
Plane._y = 70;
Plane._x = -52;
pl += 1;
break;
case 4:
attachMovie("GameOver", "GameOver", 1001);
GameOver._x = 275;
GameOver._y = 160;
target.removeMovieClip();
ship1.removeMovieClip();
ship2.removeMovieClip();
plane.removeMovieClip();
Mouse.show();
break;
}
}
//Функция загрузки клипа с разрушающимся объектом
function loadObjectDis(mark){
switch (mark){
case 1:
xMov = Ship1._x;
yMov = Ship1._y;
ship1.removeMovieClip();
attachMovie("ship1Distr", "ship1Distr", 995);
ship1Distr._x = xMov;
ship1Distr._y = yMov;
s1Distr += 1;
patron += 2;
break;
case 2:
xMov = Ship2._x;
yMov = Ship2._y;
ship2.removeMovieClip();
attachMovie("ship2Distr", "ship2Distr", 994);
ship2Distr._x = xMov;
ship2Distr._y = yMov;
s2Distr += 1;
break;
case 3:
xMov = Plane._x;
yMov = Plane._y;
plane.removeMovieClip();
attachMovie("planeDistr", "planeDistr", 993);
planeDistr._x = xMov;
planeDistr._y = yMov;
PlDistr += 1;
patron += 3;
break;
}
defeat = false;
}
//поведение мыши
_root.onMouseMove = function (){
if(marker < 4){
target._x = _xmouse;
target._y = _ymouse;
_root.Gun._rotation =
(Math.atan((_xmouse-275)/(415-_ymouse))*180)/Math.PI;
}
}
//первоначальная загрузка клипа первого клипа
marker=Math.ceil((Math.random()*3));
loadObject(marker);
//поведение объектов в зависимости от значения defeat = попал/не попал
_root.onEnterFrame = function() {
//не попал
if (!defeat){
switch (marker){
case 1:
//корабль
if (ship1._x < 625){ship1._x += speed;}
else {
ship1.removeMovieClip();
marker = Math.ceil((Math.random()*3));
loadObject(marker);
}
break;
case 2:
//Девушка
if (ship2._x > -85){ship2._x -= speed;}
else {
ship2.removeMovieClip();
marker = Math.ceil((Math.random()*3));
loadObject(marker);
}
break;
case 3:
//Самолёт
if (Plane._x < 602){Plane._x += speed;}
else {
Plane.removeMovieClip();
marker = Math.ceil((Math.random()*3));
loadObject(marker);
}
break;
case 4:
//игра окончена
loadObject(marker);
break;
}
}
//не попал
else {
loadObjectDis(marker);
marker = Math.ceil((Math.random()*3));
loadObject(marker);
}
//если закончились патроны - выход из игры
if (patron < 1) {marker = 4;}
}
//действия при нажатии на левую клавишу мыши
_root.onMouseDown = function(){
if (marker < 4) {
attachMovie("fire", "fire", 996);
fire._x = gun._x+Math.sin(gun._rotation*(Math.PI/180))*120;
fire._y = gun._y-Math.cos(gun._rotation*(Math.PI/180))*120;
patron -= 1;
}
switch(marker){
case 1:
if (_xmouse > ship1._x-10 && _xmouse < ship1._x+10
&& _ymouse > (ship1._y-10) && _ymouse < ship1._y+10)
{defeat = true;}
break;
case 2:
if (_xmouse > ship2._x-10 && _xmouse < ship2._x+10
&& _ymouse > ship2._y-10 && _ymouse < ship2._y+10)
{defeat = true;}
break;
case 3:
if (_xmouse > plane._x-10 && _xmouse < plane._x+10
&& _ymouse > plane._y-10 && _ymouse <plane._y+10)
{defeat = true;}
break;
}
}
Готовое изображение сохраните в своей папке в формате *.fla
Протестируйте фильм, нажав сочетание клавиш <Ctrl>+<Enter>, устраните недочёты.
.