Как сделать игру на actionscript

Добавил пользователь Владимир З.
Обновлено: 19.09.2024

Как создать игру при помощи actionscript на macromedia flash? Я хочу создать игру на подобии гонки или драки чтобы при помощи клавиатуры можно было ехать, или ходить. Дайте точную ссылку чтобы можно было скачать без всяких смс подтверждении. Просто дайте точную ссылку и получите лучший ответ.

Иван самсонов. НУ ВОТ ИМЕННО. Дай мне ссылку на то чтобы научиться создавать игры и не простые а хорошие флэш игры.

Это не просто, понадобится года два, прежде чем ты создашь игру. Многие начинаю, но не выдерживают и бросают. А MakTraher недооценивает возможности платформы, как и многие другие) )

А насчет того, что делать:
0) Лучше выкинь macromedia flash mx, эта программа устрела еще в 2004 и сейчас ее современная версия называется Adobe Flash CS.
1) Тебе понадобятся хотя бы школьные знания математики и физики. Без этих составляющих ты не сможешь запрограммировать логику игры.
2) Ты должен уметь сам искать информацию, поэтому следующие книги и информацию ищи сам. Поисковики открыты для всех. Иначе будешь стопориться на каждой мелочи и объяснять тебе каждый шаг будет некому. Поэтому без ссылок.
3) Говорят, что начинать стоит с ActionScript 3.0, но я больше сторонник начала с ActionScript 2.0. Так как на втором уже есть много очень нужного кода, который желательно уметь понимать и читать:

- Осваиваешь программу Adobe Flash CS.. Ищешь уроки в интернете или самоучитель и смотришь: создание анимаций, окно properties, рисование, библиотека, movieclip и прочие не программисткие вещи. Книг достаточно.
- Дмитрий Гурский - "ActionScript 2.0 Для профессионалов" (можно начать со следующей книги и потом вернуться к этой)
- Гэри Розенцвейг - "Cоздани игр с помощью ActionScript"
- Колин Мук - "ActionScript 3.0"
- Джоб Макар - "Секреты разработки игр в Macromedia Flash MX" (я считаю, очень важная книга)

Еще тебе понадобиться серверный язык программирования, например (от легкого к сложному) : Python, PHP, Java, C++.
И базу данных, какую удобнее: MySQL, PostgreSQL, SQLite

В общем тебя ждет около пяти тысяч трудных страниц печатного текста, который надо прочитать и понять. А потом еще и применить. Что не получается - поисковик в помощь, большинство тем уже не раз изложена на различных сайтах по flash.

Это не просто так. Сначала скачай самоучители, которые тебя научат программировать. А потом уже качай программу и создавай.

сам ты не создашь, хорошую и простую игру. Тебе нужна бригада этак 5-10 челов со знанием actionscript. Ну а так токо на небольшой проектик можешь расчитывать.

Хотя в действительности данная команда не будет применяться в законченном Flash-ролике, приводимый здесь пример наглядно демонстрирует, что при помощи ActionScript вы можете заставить Flash выполнить указанные вами действия.

Для начала создайте новый Flash-ролик. При этом автоматически создается временная шкала с одним слоем и одним ключевым кадром. Выделив его и нажав F9, вызовите окно Actions. Затем при помощи всплывающего меню в правом верхнем углу окна переключите его в экспертный режим.

Теперь вы сможете поместить курсор в пустое программное поле в правой части окна Actions. Введите следующую строку:

Точка с запятой ставится в конце каждой команды, как в примере с trace.

Команда trace – это встроенная функция Flash. В круглых скобках указываются параметры функции. Параметры – это входные данные, необходимые функциям для выполнения их задачи. Команда trace использует один параметр: строку, которая помешается в окно Output. Некоторые функции содержат один параметр и более, в то время как другие – ни одного.

Ваш экран должен выглядеть примерно так, как изображено на рис. 2.2. Здесь вы видите один слой и один кадр на временной шкале. Окно Actions имеет заголовок Actions – Frame. Это обозначает, что содержащийся в окне код ActionScript относится к выбранному в данный момент ключевому кадру. Единственным элементом программного листинга является команда trace. Попробуйте самостоятельно создать данный ролик.


Рис. 2.2. Программа "Hello World" описывает первый и единственный кадр

Для того чтобы запустить программу, выберите команду Control › Test Movie (Контроль › Запустить пробное воспроизведение ролика). В течение секунды Flash создаст swf-файл и откроет его в окне предварительного просмотра. Окно останется пустым, так как в ролике нет никакой графики. Затем будет открыто окно Output со словами "Hello World!" (рис. 2.3). Это был важный шаг в изучении ActionScript. Мы дали Flash команду. В ответ Flash показал, что он понимает ее и слушается вас.


Рис. 2.3. В окне Output содержится результат выполнения команды trace

Программа "Hello World" появилась вместе с первыми языками программирования и стала традиционной. Это самая элементарная программа, которая обычно приводится как первый пример при обучении любому языку программирования, будь то ассемблер громадной ЭВМ, Basic, Pascal, С, Java или ActionScript. Только что вы прошли по следам миллионов программистов, начинающих изучать свое ремесло.

Мы закончили изучение основ ActionScript, теперь давайте рассмотрим более сложные темы. В следующих 10 уроках обсуждаются некоторые приемы, которые используются для создания игр, описанных в данной книге.

Урок 15. Контроль воспроизведения клипа

Исходный файл: Mcplayback.fla

Клипы представляют собой как бы небольшие ролики внутри основного Flash‑ролика. Они включают полноценную временную шкалу со слоями, а также большинство элементов основного ролика. И основной Flash‑ролик, и клипы можно контролировать при помощи команд play() и stop().

На Web‑странице, в библиотеке файла под названием Mcplayback.fla, находится клип "myMovieClip". Этот клип состоит из 10 кадров, промаркированных для того, чтобы вы знали, какой кадр клипа воспроизводится в данный момент.

Перетащив клип из библиотеки на рабочее поле, вы создадите его копию, которой можно и даже нужно присвоить имя. Для этого используйте панель Properties (Свойства), изображенную на рис. 3.1.


Рисунок 3.1. В панели Properties можно присвоить имя копии клипа

Вы наверняка заметили, что копия клипа имеет такое же имя, как и клип в библиотеке. Обычно это делается при создании одной копии клипа. Имя копии легче запомнить, если оно совпадает с именем объекта библиотеки.

Библиотека ролика, рассматриваемого в примере, также содержит пять кнопок. Они помещены на рабочее поле под копией клипа. Присваивать имена копиям кнопок необязательно, впрочем, вы и не сможете этого сделать. В любом случае код не может ссылаться на кнопку, поэтому в имени нет необходимости.

После добавления клипа и пяти кнопок рабочее поле будет иметь примерно такой вид, как показано на рис. 3.2. Кнопки не только выглядят, но и используются как кнопки управления видеомагнитофоном.


Рисунок 3.2. Кнопки позволяют контролировать воспроизведение клипа

Пять кнопок позволяют полностью контролировать клип. Кнопка Play (Воспроизведение) запускает воспроизведение ролика. При достижении конца клипа воспроизведение начинается снова с первого кадра. Кнопка Stop (Стоп) останавливает воспроизведение ролика в текущем кадре. Кнопка Rewind (Перемотать) возвращает клип к первому кадру. Кнопки Previous (Предыдущий) и Next (Следующий) продвигают клип на один шаг соответственно назад или вперед.

Прежде чем передать контроль над клипом пользователю, необходимо остановить клип. Обычно клипы запускаются сразу же после своего появления на рабочем поле. Чтобы предотвратить это, в первый кадр главной временной шкалы был помещен следующий сценарий, останавливающий анимацию клипа, а также сам ролик:

В сценариях для кнопок команды клипу посылаются также при помощи точки. Вот сценарий кнопки Play, задающий воспроизведение клипа:

Кнопка Stop посылает клипу команду stop():

Кнопка Rewind задает переход клипа к первому кадру и его остановку. Это действие выполняет команда gotoAndStop() с параметром 1.

Кнопки Previous и Next перемещают клип на один кадр вперед или назад. Эти действия выполняются при помощи команд prevFrame() и nextFrame():

Хотя целью данного урока было научить вас управлять воспроизведением клипов, вы можете использовать данный пример как руководство для воспроизведения анимации и даже слайд‑шоу во Flash.

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Недавно мне нужно было сделать небольшой SWF-ролик с парой кнопок и несколькими картинками. Так как мой основной рабочий инструмент - Linux, то и делать ролик решил с помощью "открытого" программного обеспечения. Кстати, это же программное обеспечение доступно и под Windows.

Компания Adobe в данный момент предоставляет Flex4 SDK - бесплатное программное обеспечение для компиляции SWF-файлов из исходников, написанных на Action Script 3.0 (далее - AS3). Flex4 SDK содержит все библиотеки Flex, библиотеки Flash MX, и компилятор mxmlc , с помощью которого можно компилировать в формат SWF как файлы *.mxml (формат Flex), так и AS3-программы.

Сразу скажу пользователям Windows - Flex4 SDK есть и под Windows, однако лучше сразу установить и среду FlashDevelop. Это удобная OpenSource среда разработки, которая после правильной настройки включает в себя все нужные части из Flex SDK. Она предназначена для комфортного написания и компилирования AS3-кода. Так как FlashDevelop завязан на Win API и библиотеку .NET, его портирование под Linux затруднено, поэтому в Linux приходится довольствоваться только Flex4 SDK. В любом случае, приведенный в статье код скомпилируется не только в "чистом" Flex4 SDK, но и в настроенном FlashDevelop.

В этой статье я приведу код небольшого приложения, которое компилируется с помощью компилятора mxmlc в SWF файл. Называться программа будет "Просмотрщик картинок". Окно программы будет содержать следующие элементы:


В коде будет показано, как реализуются следующие вещи:

  • Как импортировать картинки вовнутрь SWF
  • Как сделать простую кнопку
  • Как сделать функцию-обработчик клика по кнопке
  • Как сделать кнопку, при клике на которую следует переход на заданный URL
  • Как показать и двигать картинку на экране
  • Как сделать основной цикл программы (main loop)
  • Как сделать прелоадер (preloader)

Полученных знаний будет достаточно, чтобы написать небольшую Flash-игру на чистом Action Script v.3.0. Итак, начнём.

Приложение будет состоять из трех файлов:

  • Main.as - основной файл программы
  • PushButton.as - класс, реализующий кнопку
  • Preloader.as - класс, реализующий прелоадер

Назначение файлов Main.as и Preloader.as , в принципе, понятно. А зачем нужен PushButton.as ? Неужели во Flash нет готовой реализации обычной кнопки? Да, нет. На дворе 2010 год, а во Flash добавить обычную кнопку одной командой невозможно. Точнее, классическая кнопка есть, но находится она в библиотеке Flex. А использовать одновременно объекты Flex и более привычные объекты Flash нельзя. Мы будем реализовывать программу с помощью объектов Flash (ибо Flex - это отдельная большая песня), так что кнопку нам придется сделать самостоятельно.

// Параметры SWF-файла
[SWF(width="550", height="380")]

// Интегрирование прелоадера, лежащего в Preloader.as
[Frame(factoryClass="Preloader")]

// Основной класс программы
public class Main extends Sprite

// Картинки кадров (будут храниться в массиве как DisplayObject)
public var kadr:Array=new Array();

// Параметры картинок-кадров
public var kadr_num:int=3; // Количество картинок-кадров
public var kadr_current_num:int=1;
public var kadr_move_step:int=10;
public var kadr_size_x:int=464;
public var kadr_size_y:int=380;

// Текущее состояние программы
public var state:String="wait_action";


// Конструктор основного класса
public function Main():void
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
>


// Точка входа, после того как загрузился весь ролик
public function init(e:Event = null):void
var i:int;

// Отключение обслуживания прелоадера
removeEventListener(Event.ADDED_TO_STAGE, init);


// Библиотека картинок
[Embed(source="logo.jpg")] var symbol_logo:Class;
[Embed(source="kadr_1.jpg")] var symbol_kadr_1:Class;
[Embed(source="kadr_2.jpg")] var symbol_kadr_2:Class;
[Embed(source="kadr_3.jpg")] var symbol_kadr_3:Class;

// Загрузка (создание инстанта) картинки логотипа из библиотеки
var logo:DisplayObject=new symbol_logo();

// Загрузка (создание инстанта) картинок с кадрами из библиотеки
kadr[1]=new symbol_kadr_1();
kadr[2]=new symbol_kadr_2();
kadr[3]=new symbol_kadr_3();

// Для загрузки (создание инстанта) можно попробовать другой код:
/*
for(i=1; i =kadr_size_y)
// Уехавший кадр скрывается
kadr[kadr_current_num].y=0;
kadr[kadr_current_num].visible=false;

// Приехавший кадр выравнивается
kadr[kadr_current_num-1].y=0;


// Обработка кнопки назад (т.е. вверх)
private function back_click(event:MouseEvent):void
if(state=="wait_action")
// Перемещаться нельзя, если начальный кадр
if(kadr_current_num==1) return;

kadr[kadr_current_num-1].x=0;
kadr[kadr_current_num-1].y=(-kadr_size_y);
kadr[kadr_current_num-1].visible=true;
>
>


// Обработка кнопки вперед (т.е. вниз)
private function forward_click(event:MouseEvent):void
if(state=="wait_action")
// Перемещаться нельзя, если конечный кадр
if(kadr_current_num==(kadr_num)) return;

kadr[kadr_current_num+1].x=0;
kadr[kadr_current_num+1].y=kadr_size_y;
kadr[kadr_current_num+1].visible=true;
>
>


// Обработка кнопки перехода по указанному URL
private function go_click(event:MouseEvent):void
var url:String="https://webhamster.ru";
var url_request:URLRequest=new URLRequest(url);
navigateToURL(url_request, "_self");
>

package
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.utils.getDefinitionByName;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.display.LoaderInfo;

public class Preloader extends MovieClip

private var preloader_text:TextField;

// Геометрия SWF файла
private var swf_w:int=550;
private var swf_h:int=380;

// Инициализация загрузчика
public function Preloader()
if (stage) stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
>
addEventListener(Event.ENTER_FRAME, checkFrame);
loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);

// Текст о состоянии загрузки выводится на экран
preloader_text=new TextField();
preloader_text.text="Load 0 % ";
preloader_text.textColor=0xA0A0A0;
preloader_text.selectable=false;
preloader_text.autoSize=TextFieldAutoSize.CENTER;
preloader_text.x=swf_w/2-preloader_text.width/2;
preloader_text.y=swf_h/2;
addChild(preloader_text);
>

private function ioError(e:IOErrorEvent):void
trace(e.text);
>

// Метод, вызываемый при изменении количества загруженных байт
private function progress(e:ProgressEvent):void
// Обновляется текст загрузчика
preloader_text.text="Load "+(Math.round((loaderInfo.bytesLoaded*100)/loaderInfo.bytesTotal))+" %";
>

private function checkFrame(e:Event):void
if (currentFrame == totalFrames)
stop();
loadingFinished();
>
>

// Завершение загрузки
private function loadingFinished():void
removeEventListener(Event.ENTER_FRAME, checkFrame);
loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress);
loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioError);

// Текст загрузчика скрывается
preloader_text.visible=false;

private function startup():void
var mainClass:Class = getDefinitionByName("Main") as Class;
if (parent == stage) stage.addChildAt(new mainClass() as DisplayObject, 0);
else addChildAt(new mainClass() as DisplayObject, 0);
>
>
>

import flash.display.Sprite;
import flash.display.DisplayObject;
import flash.display.SimpleButton;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;

public class PushButton extends SimpleButton
private var button_x:Number=0;
private var button_y:Number=0;
private var button_width:Number=0;
private var button_height:Number=0;
private var button_text:String="";

public function PushButton(buttonX:Number,
buttonY:Number,
buttonWidth:Number,
buttonHeight:Number,
buttonText:String)
button_x=buttonX;
button_y=buttonY;
button_width=buttonWidth;
button_height=buttonHeight;
button_text=buttonText;

upState=button_sprite(0x888888);
overState=button_sprite(0x999999);
downState=button_sprite(0xAAAAAA);
hitTestState=button_sprite(0xBBBBBB);


private function button_sprite(color:uint = 0x888888):Sprite

var b_sprite:Sprite=new Sprite();

b_sprite.graphics.lineStyle(1);
b_sprite.graphics.beginFill(color);
b_sprite.graphics.drawRect(0, 0, button_width, button_height);
b_sprite.graphics.endFill();

var button_label:TextField;
button_label=new TextField();
button_label.text=button_text;
button_label.selectable = false;
button_label.autoSize=TextFieldAutoSize.CENTER;
button_label.x=(button_width-button_label.textWidth)/2-1;
button_label.y=(button_height-button_label.textHeight)/2-2;

Пара пояснений. Весь ролик существует в одном кадре. Основной цикл (main loop) организован с помощью обработки события перехода на начало кадра. Так как ролик состоит из одного кадра, то main loop вызывается с частотой смены SWF-кадров, обычно это 12 раз в секунду.

Основной класс программы (класс Main) унаследован от объекта Sprite. Поэтому основной объект можно рассматривать как холст, на котором происходят всякие преобразования. На него можно ложить элементы с помощью метода addChild(). Эти элементы можно скрывать и показывать, можно перемещать, меняя их координаты.

Запустить компиляцию можно с помощью следующей команды:

mxmlc -debug Main.as

Опция -debug нужна, чтобы нормально работала функция trace() . Путь к компилятору mxmlc нужно добавить в переменную PATH, либо указывать полный путь к бинарнику компилятора. В данный момент, в Flex4 SDK компилятор располагается в подкаталоге /bin каталога, куда был установлен Flex4 SDK.

Читайте также: