Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программирование » Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript - Гэри Розенцвейг

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript - Гэри Розенцвейг

Читать онлайн Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript - Гэри Розенцвейг

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 79 80 81 82 83 84 85 86 87 ... 90
Перейти на страницу:

onClipEvent(load) {

// Получаем исходную информацию.

totalFileSize = _root.getBytesTotal();

startTime = getTimer();

startBytes = _root.getBytesLoaded();

// Прячем полосу загрузки.

this._xscale = 0;

}

onClipEvent(enterFrame) {

// Выясняем, сколько байт уже загружено.

bytesLoaded = _root.getBytesLoaded();

// Преобразуем это значение в величину от 0 до 1.

amountLoaded = bytesLoaded/totalFileSize;

// Преобразуем полученное значение в величину от 0 до 100.

percentLoaded = int(100*amountLoaded);

// Определяем масштаб полосы загрузки.

this._xscale = percentLoaded;

// Определяем скорость загрузки.

timeSoFar = getTimer() – startTime;

speed = bytesLoaded/timeSoFar;

// Выясняем, сколько времени осталось до конца загрузки.

bytesLeft = totalFileSize – bytesLoaded;

timeLeft = (bytesLeft/speed)/1000;

// Преобразуем полученное значение

// в величину с одной цифрой после запятой.

speed = int(10*speed)/10;

// Устанавливаем текстовые поля.

_root.bytesMessage = int(bytesLoaded/1000) + "kb/" + int(totalFileSize/1000) + "kb";

_root.speedMessage = speed + "k/sec";

_root.timeMessage = int(timeLeft) + " seconds remaining"; [21]

// Проверяем, все ли уже загружено.

if (amountLoaded >= 1.0) {

_root.gotoAndStop("complete");

}

}

Другие типы экранов загрузки

Только что рассмотренные экраны загрузки – стандартные. Кроме них существует множество других вариантов. Самый простой: можно отображать только статический кадр с надписью «Loading, Please Wait.» (Идет загрузка, пожалуйста, подождите.). Когда загрузка будет завершена, ролик просто перейдет следующему кадру.

Этот вариант можно усложнить и поместить какую-либо повторяющуюся анимацию в кадр.

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

Возможно, для создания таких экранов загрузки функции getBytesTotal() и getBytesLoaded() не понадобятся. Вместо них можно воспользоваться функцией ifFrameLoaded(), чтобы узнать, загружены ли все графические объекты определенного кадра. Эта функция пригодится, если вы хотите, чтобы пользователь начал какую-то часть игры, но не смог продолжить до тех пор, пока необходимые кадры не будут готовы.

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

Защита от копирования

Итак, прочитав эту книгу, вы решили создать свою собственную игру. На это у вас ушли месяцы. Когда вы закончили свой проект, получилась замечательная Flash-игра. Вы убеждены, что она станет суперпопулярной и сделает вас знаменитым.

Вы разместили игру на Web-сайте и начали ждать результатов. Через несколько недель вы узнали, что в нее играют сотни людей. Вы также обнаружили аналогичную игру на домашней страничке подростка из штата Небраска.

Минуточку! Это же ваша игра! Она на домашней страничке какого-то подростка, который утверждает, что сам создал ее! Но что еще хуже – на его страничку заходят миллионы и миллионы людей. И лавры за созданную вами игру достаются ему.

Предотвратить это можно несколькими способами. Давайте сначала рассмотрим, как происходит такая кража.

Как и почему воруют игры

Уже на протяжении пяти лет я создаю для Web игры на базе технологий Shockwave и Flash. Я обнаружил, что мои игры без разрешения используются на различных Web-сайтах, начиная от персональных домашних страничек и заканчивая официальными бизнес-сайтами.

Первое, что следует понять, – в 90 % случаев вор даже не подозревает, что совершает кражу. Для большинства людей Internet стал большой бесплатной игровой площадкой. Многое они получают бесплатно и даже не думают о том, кто владеет этой программой или любой другой информацией, какова была стоимость ее создания, они не задумываются о проблемах копирования и интеллектуальной собственности. Все это не имеет значения, так как большинство программ бесплатные.

Когда кто-то начинает создавать свой собственный Web-сайт, не важно – домашнюю страничку или сайт, который положит начало электронному бизнесу, этот человек не думает о таких вопросах. Напротив, он считает, что раз можно посмотреть что-то бесплатно, то можно, также не платя денег, использовать понравившееся на своем Web-сайте. Если пользователь видит что-то заслуживающее внимания на чужом сайте, он смотрит HTML-код и копирует его. Если он видит интересную анимированную GIF-картинку, он щелкает правой кнопкой мыши и сохраняет ее на компьютере, чтобы впоследствии использовать для своего сайта. Если он видит вашу игру, то также берет ее и размещает на своей страничке.

Некоторые люди понимают, что это неправильно, но не осознают, какой вред причиняют. Они считают, что если ограничение скорости – 55 миль/час, то ничего не случится, если они будут ехать со скоростью 56 миль/час. Для них сеть – многомиллионная корпорация, и они не могут кому-то навредить, если возьмут одну небольшую игру для своего сайта.

Годами я слышал все это. Люди просят, и я разрешаю размещать игры на их сайтах, даже если не был знаком с ними ранее. Люди убеждены, что раз они купили одну из моих книг, значит, все, что есть на моем Web-сайте, может появиться и на их страничках. Люди утверждают, что все программы и другая информация должны быть бесплатными, чтобы можно было брать игры, ни у кого не спрашивая разрешения.

Методы, которыми пользуются люди для получения Flash-игр, на удивление просты. Один из вариантов: вор просматривает HTML-код страницы, где располагается ваш ролик, получает имя и путь к нему с помощью параметра src тэга OBJECT или embed, а затем указывает в браузере непосредственный путь к swf-файлу. После этого пользователь может выбрать пункт File → Save as (Файл → Сохранить как), чтобы сохранить swf-файл на своем локальном жестком диске.

Даже если вы умудрились спрятать HTML-код от пользователя, он всегда может найти скрытые файлы в кэше своего браузера и выбрать из них соответствующий swf-файл.

Как предотвратить воспроизведение игры с другого компьютера

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

Итак, как помешать кому-либо украсть вашу игру? Никак. Но вы можете помешать ему проигрывать игру с другого сайта, таким образом, украденная игра станет бесполезной.

Ключ к такой защите – свойство _url, которое возвращает строчку, содержащую весь путь к вашему swf-файлу. Если ролик располагается по адресу http://www.garyrosenzweig.com/flash5book/copyprotection1.swf, именно эту строчку вернет свойство _url.

После того как вы ее получили, можете разбить ее на части и выделить имя основного домена. Например, в вышеприведенном адресе основной домен – garyrosenzweig.com. Просмотрите следующий фрагмент программы Copyprotection1.fla:

// Показываем весь путь.

urlText = "This game is being loaded from: " + _url;

// Получаем строку, находящуюся между символами "://"

// и следующим символом "/".

c1 = _url.indexOf("://"+3;

c2 = _url.indexOf("/", c1);

domain = _url.sunstring(c1, c2);

// Удаляем все символы перед первой точкой.

c3 = domain.lasrIndexOf(".")-1;

c4 = domain.lastIndexOf(".", c3) +1;

domain = domain.substring(c4, domain.length);

// Отображаем основной домен.

domainText = "The root domain is: " + domain;

Полученное имя основного домена вы можете сравнить с доменом, на котором находится ваш сайт. Основной домен, используемый в пути к вашей игре, для разных пользователей может выглядеть по-разному. Например, адреса http://garyrosenzweig.com и http://www.garyrosenzweig.com относятся к одной страничке, но свойство _url для них будет различным. Также в адресах некоторых сайтов перед доменом могут быть указаны не только символы типа «www.», например, www.games.garyrosenzweig.com. Если основной домен не соответствует тому, который ожидает программа, значит, игру украли. В этом случае вместо перехода к ролику игры программа может перейти к другому кадру, в котором, например, будет выводиться угрожающее сообщение.

...

Совет

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

Исходный файл: Copyprotection2.fla Далее следует фрагмент программы, сравнивающей свойство _url с тем доменом, на котором располагается ваша игра. Этот код вы можете посмотреть в файле Copyprotection2.fla.

// Получаем строку, находящуюся между символами «://»

// и следующим символом "/".

c1 = _url.indexOf("://"+3;

c2 = _url.indexOf("/", c1);

domain = _url.sunstring(c1, c2);

// Удаляем все символы перед первой точкой.

c3 = domain.lasrIndexOf(".")-1;

c4 = domain.lastIndexOf(".", c3) +1;

domain = domain.substring(c4, domain.length);

// Переходим к соответствующей странице.

if (domain != "garyrosenzweig.com") {

gotoAndPlay("stolen");

} else {

gotoAndPlat("start");

}

Вместо того чтобы ролик переходил к другому кадру, вы можете сделать так, чтобы он вызывал функцию getURL() с адресом HTML-страницы, на которой и будет находиться ваше гневное сообщение. Таким образом, не нужно будет помещать кадр с сообщением в каждый ролик, который вы создаете.

Как обойти защиту от копирования

1 ... 79 80 81 82 83 84 85 86 87 ... 90
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript - Гэри Розенцвейг.
Комментарии