Тема: Game Dev

Сторона программирования игр для web

Как открыть ссылку из Flash AS3, делаем простую кнопку-ссылку

Задача — необходимо создать кнопку, по нажатию которой происходит переход по ссылке на Flash, в этом же или новом окне.

Напишу краткую инструкцию с примером кода ActionScript.
В начале создаем на сцене любой MovieClip или кнопку, прописываем у него Instance name, например MyLink:
Instance name

Потом открывает окно для ActionScript, это может быть просто окно Actions (вызывается кнопкой F9), или ваш класс .as. Пишем следующий код:

MyLink.addEventListener(MouseEvent.CLICK,goURL);// отслеживаем событие клика
function goURL(e:MouseEvent){
var request:URLRequest = new URLRequest("http://maker.su/");
navigateToURL(request);// переходим на адрес
}

Читать

AS3: Хитрости с массивами, как быстрей работать с массивом

Самый быстрый способ пройти весь массив — это обойти его с конца:
var i:int = array.length;
while(i--) {
trace(array[i]); //делаем необходимую операцию с массивом
}

Очистка массива.
Чаще всего очищать массив принято присвоением = [] , но быстро очистить массив в AS3 лучше следующим образом:
array.length = 0;

Читать

AS3: Найти все объекты в MovieClip, все дочерние объекты

Когда в ActionScrpt 3 требуется найти все объекты в родительском, пишу для всех следующий код. Очень часто используется для дебага, когда не понятно какие объекты существуют в родителе.

Задача — вывести все объекты в MovieClip с их именами, типами и порядком.

Код AS3 для вывода списка дочерних объектов из родителя
for (var i:uint=0; i < parent.numChildren; i++){
trace (i+'.\t Имя:'+parent.getChildAt(i).name+'\t Тип:'+typeof (parent.getChildAt(i))+'\t Объект'+parent.getChildAt(i));
} Читать

Число с плавающей точкой в AS3

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

В моем случае после вычисления примерно такого характера:

Math.round(0.285*100); // должны получить 29, но!
trace(Math.round(0.285*100)); // = 28!!!

Оказалось что:

trace(0.285*100);// = 28.499999999999996

в результате чего округление происходит до ближайшего числа, тоесть до 28.

Из-за особенности чисел с плавающей точкой со многими другими числами всё нормально, при таких операциях.

Как сделать сайтлок (site lock) на Actionscript 3

Многие разработчики сайтов и игровые спонсоры желают закрыть флеш игру только для своего сайта, для этого используется сайтлок. Сайтлок реализуется простым кодом, который проверяет домен, с которого запустили скрипт.

Адрес сайта в ActionScript 3 берется из параметров stage:

var url:String=stage.loaderInfo.url;

Если вам необходима проверка только на один домен, то подойдет следующий код:

var url:String=stage.loaderInfo.url;
var goodPattern:RegExp=/^(http:\/\/)(www\.)?makers\.su/;
if (goodPattern.test(url)==true) {
 trace("Проверка на сайтлок пройдена");
} else { 
 trace("Игра запущена на другом домене");
} 

Если вы хотите поставить сайтлок сразу на несколько сайтов, используйте массив с последующей проверкой по его элементам.

 

Как изменить яркость и контраст мувиклипа в AS3

Для изменения яркости и контаста графического объекта в AS3 существует класс ColorTransform.

Как использовать его расскажу на примере:

var sprite:Sprite=new Sprite();// берем простой спрайт, это будет пустой спрайт, но для теста конечно надо взять спрайт с графикой

var colorTransform:ColorTransform = new ColorTransform(); // создаем объект класса ColorTransform

colorTransform.redOffset = 25;// делаем сдвиг цвета по вашему желанию, значение от -255 до 255
colorTransform.greenOffset = -55;
colorTransform.blueOffset = -120;

colorTransform.redMultiplier = 0.75; // значение может быть от 0 до 1.0
colorTransform.greenMultiplier = 0.6;
colorTransform.blueMultiplier = 1.0;

sprite.transform.colorTransform = colorTransform;// применяем

в результате каждый цвет вычесляется по формуле:
красный = (красный * redMultiplier) + redOffset
зеленый = (зеленый * greenMultiplier) + greenOffset
синий = (синий * blueMultiplier) + blueOffset
альфа = (альфа * alphaMultiplier) + alphaOffset

Для регулировки яркости и контраста необходимо регулировать все параметры, иначе вы получите не тот рузельтат