FlashWorld :: Flash и около

Thursday, January 12, 2006

Прототип. Транслит.

Вот прототип для преобразования русского текста в транслит:
String.prototype.translit = function() {
var str = this;
ru = ["А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Э", "Ю", "Я", "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ь", "ы", "ъ", "э", "ю", "я"];
tr = ["A", "B", "V", "G", "D", "E", "E", "Zh", "Z", "I", "I", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "H", "C", "Ch", "Sh", "Sh'", "E", "Yu", "Ya", "a", "b", "v", "g", "d", "e", "e", "zh", "z", "i", "i", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "c", "ch", "sh", "sh'", "'", "i", "'", "e", "yu", "ya"];
var i = 0;
while (i <>
str = (str.split(ru[i])).join(tr[i]);
i++;
}
return str;
};
/** мануал **/
//Это метод для преобразования русского текста в транслит.
//Как юзать:
i = "Ваш текст тут";
trace(i.translit()); // вызываем метод
Здесь исходник.

Tuesday, January 03, 2006

Web 2.0

Ну что ж, если эта тема так популярна, то и почему бы мне не написать об этом. Я не буду говорить о грядущих переменах и вообще радоваться по этому поводу. Web 2.0 не возможен. Web - это не браузер, он не может измениться за один миг и поменять представления людей. Хотя у меня возникает именно такое мнение, когда я читаю статьи по Web 2.0. Почитав недавно найденый мною блог на mail.ru, где как раз обсуждали вторую версию веба, у меня сложилось впечатление, что эти люди готовятся к моменту "преображения веба". Они как-будто знают, что, выйдя однажды в Интернет, увидят уже новый веб. Представляю себе надпись на весь экран "Велкам ту веб 2.0!" и кнопочки на сайтах "Best viewed in Web 1.0" или "Optimized with Web 1.0". Так же видел где-то табличку, сравнивающую "старый" и "новый" web. Персональных страниц не будет - будут персональные блоги и дневники. Все поисковики будут работать на AJAX'e и тд...
Тут я даже могу согласиться с Нильсеном, который "с сокрушением отмечает, что дизайнеры чрезмерно увлекаются современными технологиями, в частности, устраивают конференции по новомодному "Web 2.0", тогда как пользователям на самом деле нет никакого дела до технологий. Им нужно только, чтобы текст читался, контент отвечал на их вопросы, а навигация и поиск позволяли найти нужную информацию."
В таком случае надо говорить не о Web 2.0, а об улучшении Web'a, в частности повышения юзабилити, улучшения поиска и тд...

Saturday, December 31, 2005

С новым годом всех!

Monday, December 26, 2005

Создаем себе праздничное настроение. Снегопад во Флэше.

Зима. Скоро новый год. В моем городе снега уже достаточно. Но есть такие экземпляры городов, где функция Zima(); вызывается с аргументом snow=false :) Или, возможно, вы хотите, чтобы снег был не только на улице но и во Flash'e. Всё это исполнимо. Приступаем к исполнению...

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

Открываем Флэш, устанавливаем размеры сцены, фон и FPS (я ставил 25).
Рисуем снежинку. Особо мудрить не стоит, так как их будет много и за их индивидуальностью никто следить не будет. Я просто взял кисть и поставил ей точку - снежинка готова. Выделяем снежинку, тыцкаем F8, выбираем MovieClip. В панели свойств напишите её имя "sn", без кавычек. Всё, теперь приступаем к скрипту.
Это пишем в действиях муви-клипа снежинки:


onClipEvent(enterFrame){
//снежинка падает. random здесь стоит, чтобы
//снежинки обгоняли друг друга и каждая летела со
//своей скоростью. +3 после random'a для того, чтобы
//при значении 0 снежинка продвигалась хотя-бы на 3 пикселя,
//а то матрица какая-то получится...
this._y += random(6)+3;
//если снежинка улетела за нижний край экрана, возвращаем наверх.
//пусть снова падает :) И поменяем _x - чтобы снегопад менялся.
if(this._y > 400){
this._y = -5;
this._x = random(400);
}
//эти строчки пригодятся если вы будете делать "сдувание" снежинок:
if(this._x > 400){ this._x = 1}
if(this._x < 0){ this._x = 400}
}


Это всё. Теперь можете нажать CTRL-Enter и посмотреть как одна снежинка носится по экрану. Для снегопада нам понадобится чуть побольше снежинок чем одна. Конечно, можно их прямо сейчас скопировать и разбросать по эрану, но профессионалы так не делают :) Открываем Панель действий кадра. Пишем это:


i = 1 // переменная-счетчик. ставим начальное значение 1.
ii = 100 // кол-во снежинок. 100 - хватит.
while(i < ii){
//дублируем одинокую снежинку
_root.sn.duplicateMovieClip("sn"+i, i);
//задаем для новой снежинки координаты:
_root["sn"+i]._y = random(400);
_root["sn"+i]._x = random(400);
// и размер:
scale = random(50)+50
_root["sn"+i]._xscale = scale;
_root["sn"+i]._yscale = scale;
i++
}


Вот и всё. Теперь, нажав CTRL-Enter, можете наслаждаться полноценным снегопадом. Но и это не предел :) Просто наблюдать за снегом может быстро надоесть. Поэтому добавим долю интерактивности, чтобы пользователь мог поучаствовать. Сделаем, чтобы при движении мышкой влево снег "сдувало" влево, при движении вправо - "сдувало" вправо. Пишем здесь же, в действиях кадра.


// по движению мыши происходят такие события:
_root.onMouseMove = function(){
si = 1 // еще одна переменная-счетчик для еще одного цикла.
// с интервалом в 100 миллисекунд узнаем координату мыши и обзываем её oldm:
setInterval(function(){_root.oldm = _xmouse}, 100);
while(si < ii){
// если oldm < текущей координаты "сдуваем" снежинки вправо (опять random :)
if(_root.oldm < _xmouse){_root["sn"+si]._x+= random(3)}
// аналогично, только край экрана - левый и сдуваем в другую сторону:
else if(_root.oldm > _xmouse){_root["sn"+si]._x-=random(3)}
si++
}
}


Теперь вы можете уже в третий раз нажать CTRL-Enter. Получился довольно симпатичный снегопад. А если у вас по какой-то причине снегопада не получилось, то вот исходник. Счастливого Вам Нового Года!

Достоинства.
1. 510 байт! (в моем варианте)
2. Несильно грузит проц. При 100 снежинках загрузка была где-то 20-30%

Недостатки.
1. Снежинкам не хватает кружения и покачивания. Хотя в такой "толпе" это не так и заметно и необходимо.

Когда я искал скрипт снегопада, то нашел только два. Один с классами, автор George Forest, и другой на rastyle.com. Всё, найденное на других сайтах, было копиями этих двух примеров (см. предыдущий пост :)
Если кто-то видел другие хорошие примеры снегопада, киньте линк, посмотрю.

Friday, December 23, 2005

Блоги vs рассылки и сайты.

Где можно искать всю новую и интересную информацию по Flash'y?
Ответ один: в блогах.
Вы, конечно, можете сказать, что это не такое уж ценное открытие :)
Но я хочу написать о другом.
А конкретно о ситуации в русском флэш-сообществе.
По утверждению Роста, всё это сообщество находится в глубокой жо..
Надо сказать, я был с ним не согласен, хотя и нигде это несогласие не выражал.
До некоторых пор.
Теперь же я присоединяюсь к дружному хору, кричащему что "сообщество руфлэшеров находится в...."
Почему? Ведь кроме блогов есть куча сайтов, рассылок и тд...
Будучи подписанным на несколько рассылок, от которых впоследствие с радостью отписался, посетив несколько сайтов я не нашел чего-либо интересного.
Статьи? Одинаковые на всех сайтах! Кто у кого скопировал не столь важно - вы можете посетить любой один сайт и больше никуда не ходить - везде одно и то же.
Рассылки? А как вы думаете, где авторы рассылок берут информацию? В блогах. Или вообще замечательный пример - рассылка одного сайта, который я не буду называть понятно из каких причин, приходила исправно, но с одним и тем же текстом. Спрашивается если лень выпускать новые номера, зачем вообще заводить рассылку?
Остается одно - форумы. Абсолютно ничего не имею против форума на flasher.ru - но это единственный островок флэш-комьюнити в рунете. Есть, конечно, форумы на flash-club и flash-mx, но на них мало народу. А прочитав недавно найденный мною форум о создании игр на флэше вместе с их рассылкой - вообще впал в уныние...
Вот такая ситуация, господа.
Может пора вылезать из...?

Monday, December 19, 2005

Две ссылочки

Долой прелоадеры!

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

Плюсы и минусы прелоадеров.

Пользователь видит, что загрузка идет.
Это плюс. Очень важно знать, что ролик грузится и соединение не откинуло копыта :)

Но в то же время он видит сколько еще осталось.
Это нервирует. Все познается в сравнении. И я бы не назвал мысль "Фу.. Загрузилось 34%... Еще 66% осталось..."
особенно веселой. Так же есть такой "эффект последнего процента" - при отметке 99% пользователю кажется, что последний, сотый, процент грузится очень долго... И еще: согласитесь, обидно увидеть, что загрузилось 80-90% и связь оборвалась или у вас время кончилось или еще что-нибудь помешало...

Поэтому не будем так явно показывать загрузившиеся проценты и закинем прелоадер куда-нибудь в угол.

Заполняем свободное место.

Уже вначале нужен интерактив. Пользователю будет приятно, что даже в начале своей загрузки сайт способен нести информацию. Чем же заполнить?

Мини-игра.
Простейшая игрушка а-ля "отбей мячик" или "жми на кнопку". Главное размер не больше 2-3кБ.
Суть в отвлечении пользователя на игру, чтобы на проценты не смотрел и не нервничал :)

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

Куча инфы о загрузке. сколько загрузилось\размер загружаемого\сколько байт загружено-осталось\сколько времени уже грузится\сколько осталось и тд....
Чем больше чисел меняются, тем больше ощущение у пользователя, что "процесс идет". Еще куча всяких данных мешает ему сфокусироваться на главном - сколько же загрузилось в процентах. Отвлекающий маневр, так сказать.

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

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

Sunday, December 18, 2005

Флэш-кодер | Флэш-дизайнер.

Прочитал в одной теме на форуме Flasher.ru высказывыние, что с появлением AS 3.0 можно будет быть либо флэш-кодером либо дизайнером. Цитата оттуда:

...думаю, что AS3.0 раставит точки над и, никакой делитант или дизайнер программировать не сможет это уж точно и это впринципе радует :=)

И дальше рассуждения о несправедливости - почему дизайнер может рисовать и кодить,а программер не может рисовать...
Прочитал и задумался. Лично я не понимаю радости по этому поводу. Если флэш-разработчики резко поделятся на дизайнеров и программеров, Flash, как технология потеряет свою привлекательность.
Сейчас, когда уже многим наконец-то удалось вдолбить в головы, что флэш это не просто "продвинутый графический редактор" и не "прога для создания мультиков" такое разделение может очень сильно навредить. Используя Flash один(!) человек может создать мультфильм, игру, сайт, интерактивный интерфейс. Если же дизайнер не сможет написать простой код, то ему придется обращаться за помощью к программеру, и наоборот. Основное достоинство Flash - легкость в освоении и применении будет утеряно. Что же тут может быть радостного?