Създаване на игри на флаш, ActionScript 3
което от своя страна деактивира TouchEvent сензорни събития. които са необходими за обработката на едно докосване на екрана.
Друг проблем. заявлението има визуален компонент, който може да се отнася към различните сензорни събития:
- Дърпане елемент нагоре / надолу - превъртане
- Дърпане елементи на ляво / дясно - за да го скрие
- Едно докосване на елемент пръст
Проблемът е, че ако потребителят е започнало преместване член в една посока (например нагоре или надолу), останалите събития (дърпа на ляво / дясно и едно докосване), не трябва да работят толкова дълго, колкото потребителят освободи пръст от екрана.
Третият проблем е, че стандартните сензорни събития не могат да бъдат тествани по обичайния флаш-приложение (не мобилен).
В предишния урок. от поредица развих XProject1. ние говорихме за това как да мащабирате картата от предварително определена точка на тази карта. В този урок ще ви покажа как се прави разпределението на елементите около дадена точка.
Има множество визуални елементи. Необходимо е да ги разпределя равномерно за дадена точка. Разпределете ги на случаен принцип чрез math.random () не е опция, тъй като елементите са често шепа места, а на някои места формира пропуски, и биха искали, че елементите се разпределят равномерно. И това е важно, че елементите не се припокриват, в случая на проста случайност да се постигне това, би било проблематично.
Ето разпределение шанс използване Math.random () (Натиснете бутона за разпределение на разпределение на елементи):
Трябва да има USB флаш устройство. Get Flash Player
Изглежда не е много забавно, нека се опитаме да промените кода за да получите най-добрият вариант.
Прилагане на мащабиране по различни начини, но в моя проект е ясно разделение между различните визуални компоненти и връзката е минимален (да не се получава спагети-код, с много връзки) между тях. Ако конкретно трябва mapView компонент, който показва на картата. Той има един публичен начин:
Кой се връща процент скала от 0 до 1.
С цел да се съсредоточи върху въпросният проблем, аз написах един прост проект да стане по-ясно:
Трябва да има USB флаш устройство. Get Flash Player
Така че, ние имаме два проблема:
- Картата не трябва да се намали до точката (трябва да е някакъв минимален размер)
- Карта се мащабира спрямо горния ляв ъгъл на изображението. Необходимо е да се направи карта мащабирани до центъра на екрана (където на Червения кръст)
Геометрия - една от любимите ми теми по математика. GameDev (разработка на видеоигри) - един от най-интересните теми в програмирането. Какви са приликите между геометрията и игра развитие? Никой от модерната игра е пълна без вектори. защото векторите описани от редица различни игрални лица. Vector има два параметъра, е посоката и дължината на (сила). вектор посока - е неговата ъгъл спрямо направляващата линия. Така че в този урок ще говорим за ъглите между векторите в равнината.
Аз ще ви кажа как да се определят:
- Ъгълът при които е необходимо да се върти по часовниковата стрелка единичен вектор, така че да съвпада с друга
- Най-малката ъгъла, под който е необходимо да се върти един вектор, че той щеше да съвпада с друг
- На малкия ъгъл между вектори
анимация урок растеризация. Използването FPMovieClip библиотека сме научили rasterizovyvat анимация с FPMovieClip.swc библиотека. В този урок ще ви покажа как можете да получите набор от изображения (масив от BitmapData) на анимация, използвайки FPMovieClip.swc библиотека. С такъв набор от изображения, можете да създадете различни ефекти. Аз също ви покажа как можете да получите от една анимация ефект на размисъл и сенки, както е показано на екранната:
Растеризиране на анимация - е прехвърлянето на всички анимационни рамки в набор от растерни изображения. Защо го направи? Били ли сте някога е работил с брилянтен флаш-аниматори, които са в състояние да се направи красива и ефектна анимация (например анимирани игра характер)? Така че обикновено тази анимация е безкраен брой вложени MovieClip Жена. И да управлява тази анимация на ActionScript код се превръща в проблем, а по-скоро, че няма начин да се спре, започнете, отидете на конкретна рамка, и т.н. Не много отдавна е пусната бета версия на AIR 3.8, в която нов метод stopAllMovieClips () в класа MovieClip. честен смисъл от него известно, защото след такова спиране не е възможно да се възстанови всички вложени клиповете. Има и друг проблем - флаш-аниматори са много любители на използване на различни видове филтри, ефекти, векторна графика ... И всичко това може да доведе до загуба на производителност Flash-приложения. Всички тези проблеми са решени с помощта на анимация растеризация. Ами dogonku, ако сте създали голям брой копия на единиците за игра с анимации - можете веднъж Rasterize анимация, както и да използват един и същ BitmapData-те във всички звена.
Растеризация Идеята е, че това е необходимо веднага след създаването на MovieClip, разходка в кадъра и изготвя всеки кадър на BitmapData. Важно е, че промяната на персонала настъпили Event.ENTER_FRAME събитие. защото ако го направите gotoAndStop (). вие ще получите съобщение за грешка, ако анимацията съдържа вложени видеоклипове с анимация, като те не са предмет на метода на gotoAndStop. Също така е необходимо да се вземат под внимание факта, че във всеки кадър общият размер на съответния видеоклип, е различен, и координатната на горния ляв точка също е различно, ако не се вземат под внимание - ще получите BitmapData-ите, които не могат да бъдат еднакви в анимацията.
Вземем примера на анимацията (анимация във формат FLA източник тук):
Трябва да има USB флаш устройство. Get Flash Player
Опитайте го в средата на анимацията effect_3 натиснете бутона за спиране (или бар пространство на клавиатурата), за да спрете анимацията. Вие ще видите, че вложените видеоклип спря. Само погледнете къде е отправната точка на филм клип (когато е боядисан в червено кръст). Нека се опитаме да растеризирах анимация.
Прочели сте всички предишни статии в поредицата? Тогава трябва да знаеш как да напишете контролер за контрол на анимация на героя от игралното поле. Точно както ние обсъдени принципите на създаване на многоплатформени приложения, чрез създаване на играчки за уеб и IOS / Android платформи. И ако тези единици (контролери) за игралното поле ще бъдат повече? В този случай, ние се нуждаем от контролер за контрол на група от други контролери. В тази статия, ние ще напише основния контролер GameController игра, която ще управлява взаимодействието между други контролери. До края на тази статия, ние ще направим една единица да атакува, а друг се повреди по време на удара. Но всичко, за ...
Едно от предимствата на флаш е, че в ActionScript език може да бъде лесно да се напише многоплатформени приложения. Т.е. можете да напишете една и съща ActionScript 3.0 код, а след това компилирате кода за различни платформи, като Web, IOS или Android. Но има един малък проблем, има ситуации, когато това е необходимо в една част на заявлението да пишат различни части от код. Вземем примера на контрола анимация, която изпълнява в предишния урок, Управление на анимация на символи от клавиатурата. Ако ние носим това приложение на мобилна платформа (IOS, Android) - контролера ние не се вписват, и вероятно ще се нуждаят от контролер, който контролира анимацията използвайки пръста си по екрана или други мултитъч жестове. В този урок ще се реши два проблема:
В предишната статия на характера анимация. Ние проследяване с който сте създали UnitView клас и го закачен RandomController контролер. който знае как да играе на случаен анимация бездейства. ако уредът стои неподвижен за известно време. В тази статия, ние ще се свърже с клас UnitView на друг контролер: MoveController. който ще отговаря за управлението на бизнес единица с клавиатурата на игралното поле. Свързване контролери, които продаваме, така че ако е необходимо, ние бяхме в състояние бързо да замени контролера в другата, която ще се използва в мобилните (IOS / Android) приложения. По този начин, ние ще подготвим нашата молба за развитие на различни платформи.
Преди да започнете да пишете код, бих искал да се изясни едно нещо, което трябва да се създаде основен пакет от игра /, в която искате да прехвърлите всички пакети и класове започна в предишните примери, е необходимо за нас, за да може да се създаде радикално нов контролер GameController. който ще управлява другите контролери и комуникация.
Контролер за изпълнение MoveController ще настъпи в две стъпки: