Возможно вы искали: 'EF2000 v2.0'

May 31 2025 03:17:19
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96425698
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18407
• Обзор The Walking ... 18853
• Обзор DMC: Devil M... 19921
• Обзор на игру Valk... 15921
• Обзор на игру Stars! 17810
• Обзор на Far Cry 3 18000
• Обзор на Resident ... 16063
• Обзор на Chivalry:... 17561
• Обзор на игру Kerb... 18021
• Обзор игры 007: Fr... 16667
Превью о играх
• Превью к игре Comp... 18003
• Превью о игре Mage... 14502
• Превью Incredible ... 14763
• Превью Firefall 13523
• Превью Dead Space 3 16378
• Превью о игре SimC... 14772
• Превью к игре Fuse 15479
• Превью Red Orche... 15589
• Превью Gothic 3 16388
• Превью Black & W... 17402
Главная » Статьи » Панель инструментов » Снегопад

Снегопад

Верша свой круг, назначенный от века,

Роняет Небо наземь хлопья снега...

Мария Семенова

После жаркого-жаркого лета (или не жаркого, как в этом году в Москве) и дождливой осени снежная зима приносит с собой предпраздничное настроение — близится Новый год, когда родные и близкие собираются за одним столом теплой компанией и радуют друг друга застольными беседами. Вот и мы порадуем на этот раз снежным настроением наши сайты.

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

Определим основные параметры:

speed — количество миллисекунд между двумя движениями снежинки; deltaX — максимальное отклонение по оси X снежинки от предыдущего в пикселях; deltaY — расстояние смещения снежинки между двумя движениями в пикселях; imgSrc — путь к картинке, изображающей снежинку.

Сами по себе снежинки летать не будут — их надо поместить в контейнер. В качестве контейнера для снежинки будем использовать объект DIV. В дальнейшем, задавая параметры этого контейнера, можно настраивать внешний вид снежинки.

Вы помните, что в разных браузерах (а если не повезло, то и в разных версиях одного и того же браузера) один и тот же код может работать по-разному? В частности, по-разному задаются координаты контейнера. Для определения способа нам хватит названия браузера. Чтобы его выяснить, обратимся к свойству navigator.appName — в нем содержится точное название браузера, в котором открыта страница, чем мы и воспользуемся. Будем считать, что если в строке присутствует название Internet Explorer, то так оно и есть, а во всех остальных случаях мы будем рассчитывать на FireFox. В Opera, к счастью, все тоже работает.

Выбрав браузер, мы определяем функцию позиционирования снежинки setPositionXY();

Полный текст вы можете увидеть во фрагменте кода «Проверка браузера».

Проверка браузера

this.browser.scrollTop = function () { return (document.body.scrollTop); }

this.browser.scrollLeft = function () { return (document.body.scrollLeft); }

this.browser.min_x=1;

this.browser.min_y=1;

if(navigator.appName.indexOf("Internet Explorer")!=-1) {

this.browser.max_x=document.body.clientWidth;

this.browser.max_y=document.body.clientHeight;

// позиционирование для IE

this.setPositionXY = function (x,y) {

var x=x||this.x;

var y=y||this.y;

this.div.style.pixelLeft=x;

this.div.style.pixelTop=y;

}

} else {

this.browser.max_x=self.innerWidth;

this.browser.max_y=self.innerHeight;

// позиционирование для FireFox

this.setPositionXY = function (x,y) {

var x=x||this.x;

var y=y||this.y;

this.div.style.left=x+'px';

this.div.style.top=y+'px';

}

}

В отдельный метод calc() выделим все вычисления новых координат снежинки. В принципе, формулу для траектории снежинки можно взять любую — мы за основу выбрали синусоидальную (фрагмент кода «Новые координаты»).

Новые координаты

// вычисляем новое положение

this.calc = function (x,y,dx,dy) {

var dx=dx||this.deltaX;

var dy=dy||this.deltaY;

// вычисление новой координаты

x=x+dx*Math.sin(this.browser.max_y-this.browser.min_y-this.start_y);

y=y+dy;

// проверка по диапазону

if (x>this.browser.max_x) x=this.browser.min_x;

if (x

if (y

if (y>this.browser.max_y) y=this.browser.min_y;

return({'x':x,'y':y});

}

Зная координаты, мы можем переместить контейнер со снежинкой на новое место — с помощью метода move().

Перемещение

// перемещаем снежинку

this.move = function () {

var new_pos=[];

// уточним текущее положение снежинки и очистим его от скроллинга

var x=Math.floor(this.x — this.browser.scrollLeft());

var y=Math.floor(this.y — this.browser.scrollTop());

// вычислим новое положение снежинки

new_pos=this.calc(x,y);

// вернём смещение

this.x=new_pos['x']+this.browser.scrollLeft();

this.y=new_pos['y']+this.browser.scrollTop();

this.setPositionXY(this.x,this.y);

if (!this.div.width) {this.div.width=this.div.offsetWidth;this.browser.max_x-=this.div.width;this.browser.min_x+=this.div.width;}

if (!this.div.height) {this.div.height=this.div.offsetHeight;this.browser.max_y-=this.div.height;this.browser.min_y+=this.div.height;}

}

Это факт: на самом деле наш снегопад — частный случай партикловых систем, применяющихся в играх для создания дымов, взрывов и подобных эффектов. О партиклах в нашем журнале уже писал Ричард Псмит в №10 за 2005 год.

Но нам нужно будет переместить снежинку не один раз. JavaScript позволяет вызывать определенное действие (функцию) по истечении заданного промежутка времени — с помощью стандартного метода setTimeout объекта window.

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

Шаг снежинки

this.step = function () {

this.move();

window.setTimeout(this.handler+".step()",this.speed);

}

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

Снежинки у нас будут разные:

большие — случайным образом выбранные картинки: и помельче, и наконец, просто символ *.

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

Этот фрагмент кода — в листинге «Снегопад начинается».

Снегопад начинается

var snowflakes = [];

for (var i=0; i< 5; i++) {

snowflakes=new snowflake();

snowflakes.imgSrc=(['snow1.gif','snow.gif'])[Math.floor(Math.random()*2)];

snowflakes.speed=([60,90,120])[Math.floor(Math.random()*3)];

snowflakes.draw();

snowflakes.start();

}

for (var i=5; i< 15; i++) {

snowflakes=new snowflake();

snowflakes.imgSrc='snow2.gif';

snowflakes.speed=([20,40])[Math.floor(Math.random()*2)];

snowflakes.draw();

snowflakes.start();

}

for (var i=15; i< 30; i++) {

snowflakes=new snowflake();

snowflakes.speed=([20,50,90])[Math.floor(Math.random()*3)];

snowflakes.draw = function () {

this.div.innerHTML="*";

this.div.style.color=(["#9DFFCD","#FFB99D","#F7FF9D"])[Math.ceil(Math.random()*3-1)];;

this.div.style.fontSize=([30,50,90])[Math.ceil(Math.random()*3-1)];

}

snowflakes.draw();

snowflakes.start();

Вот, собственно говоря, и все. Построенный объект snowflake легко настраивается именно благодаря своим открытым методам и отделением оформления от вычислений. Так что каждый читатель при желании сможет переделать этот снегопад к 14 февраля — дню Святого Валентина — в сердечки, летящие вверх.

Полностью код страницы и картинки к этой статье вы найдете на нашем диске. А пока — с Новым годом!

737 Прочтений •  [Снегопад] [15.08.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Снегопад Ukraine Vova 15.08.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка