- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript - Гэри Розенцвейг
Шрифт:
Интервал:
Закладка:
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-страницы, на которой и будет находиться ваше гневное сообщение. Таким образом, не нужно будет помещать кадр с сообщением в каждый ролик, который вы создаете.
Как обойти защиту от копирования

