флеш урок для начинающих
|
|
шмыга | Дата: Воскресенье, 10 Января 2010, 19:39 | Сообщение # 1 |
постоянный участник
Сейчас нет на сайте
| Это мой первый урок поетому попытаюсь как можно доходчивее и понятние обьяснять все тонкости создания игр в среде Adobe Flash:)Расчитан на новичков. И так как это мой первый урок - сильно не пинать Первое что мы сотворим - это нашего персонажа который будет бегать, прыгать и подчиняться всем законам физики:) В среде Adobe Flash наш герой будет представлен как мувие клип который будет воспроизводить определенную анимацию в зависимости от того какая клавиша была нажата Шаг 1. Подготовка анимации героя. Создаем новый сивло и обзываем его "Герой". Наш мувие клип должен содержать в себе анимацию покоя героя(когда герой стоит на месте), анимация походки, и анимация прыжка. После того как создана вся анимация. Создаеться еще один пустой слой как показано ниже. Этот слой будет служить нам как ссылка на каждую анимацию. Для этого создадим метки на которые будет ссылаться наш программный код. Выбираем первый фрейм и в свойстве properities пишем имя. Эта метка будет служить для обращения к анимаци покоя главного героя. Аналогично создаем метку для анимации ходьбы и обзываем ее ”shag” . Для последней анимации прыжка делаем метки от начала анимации до ее конца с именами от j0 до j3. После добавления меток в каждом кадре с меткой должен появиться красный флажок — это означает что вы все сделали верно:) Далее в конце анимации походки создадим еще один пустой кадр и нажав клавишу F9 в окне actions напишем следующую строку gotoAndPlay(“shag”); эта команда будет зацикливать анимацию походки т.е она будет воспроизводиться до тех пор пока нажата клавиша управления. А именно клип будет воспроизводить все кадры и дойдя до кадра с наши кодом будет переходить на метку «shag» таким образом мы получим эфект непрерывной ходьбы персонажа Теперь создадим еще один символ с именем Aktion. На этом подготовка персонажа закончена перейдем к написанию програмного кода. Для этого возврощаемся на главную сцену и из вкладки библиотека(library)вытаскиваем на сцену созданный ранее мувик «hero» и кликнув уже на вытащенном мувике, задаем ему имя в свойстве Propereties - «colobok”. .После чего создаем новый пустой слой. В этом слое и будет содержаться наш програмный код. Теперь с помошью клавиши f9 вызываем окшко aktions Шаг 2 Написание кода. Code i=0; function dvijenie(){
if (Key.isDown(Key.RIGHT)){moving=true} else{ moving=false } if (Key.isDown(Key.UP)){ jumping =true; i++; colobok.gotoAndPlay("j"+i); } if (!Key.isDown(Key.UP)){i=0;jumping = false} if(moving==true){colobok.nextFrame()} if(moving==false and jumping==false){colobok.gotoAndStop("pokoy")} } Теперь постараюсь это все обьяснить:) Начнем с функции. Фунцция это, если я не ошибаюсь, некий контейнер с именем содержащий набор команд которые она выполняет при обращении к самой функции.(Ну как то так :)) ) Так как в нашей функции будут описаны команды контролирующие перемещение героя, поетому я решил дать имя dvijenie (движение). Code function dvijenie(){ } Чтобы в будущем, когда функций станет значительно больше, между ними было легче ориентироваться. Теперь рассмотрим набор команд в теле функции: Code if (Key.isDown(Key.RIGHT)){moving=true} else{ moving=false } if (Key.isDown(Key.UP)){ jumping =t rue; i++; colobok.gotoAndPlay("j"+i); } if (!Key.isDown(Key.UP)){i=0;j umping = false} if(moving==true){colobok.nextFrame()} if(moving==false and jumping==false){colobok.gotoAndStop("pokoy")} Говоря человеческим языком здесь написанно следующее Если (Нажата клавиша(Клавиша.СтрелочкаВправо)) то {в переменную moving заносим значение true (правда)} Иначе{в переменную moving заносим значение false(лож)} (С кнопкой Вверх впринципе тоже самое, поэтому пропущу) //Далее условный оператор проверяет равно ли значение переменной moving - значению True (правда), если да то значит была нажата кнопка Вправо и MoovieClip colobok начинает проигрываться с первого кадра. Если (moving==true)то {colobok.следующийКадр()} //Следующая строка проверяет если moving равен false (лож) и jumping равен false, т.е. Не была нажата ни одна из клавишь и наш герой не движеться и не прыгает, то мувие клип colobok переходит на созданную ранее метку «pokoy», в результате чего мы видим кадр из анимации героя где он стоит. Если(не идет и не прыгает)то{colobok. Перейти и остановиться на кадре c меткой(«pokoy»)} Осталось самое простая и не менее важная часть. Наша функция не будет работать если ее не вызвать, поетому вытаскиваем из библиотеки на сцену мувик Action, нажимаем F9 и пишем следущие строки. Code onClipEvent(enterFrame){ _root.dvijenie(); } В результате при каждом обновлении экрана будет вызываться функция dvijenie. На этом пока все!Остальное в след. Уроках А именно: Передвижение героя по сцене, гравитация и столкновение с обьектами!
Сообщение отредактировал шмыга - Понедельник, 11 Января 2010, 15:14 |
|
| |
Psycho | Дата: Воскресенье, 10 Января 2010, 20:07 | Сообщение # 2 |
Психоламер
Сейчас нет на сайте
| Какой версии? Это важно, т.к. лично у меня интерфейс немного отличается от ой, что на скринах. Quote (шмыга) И так как это мой первый урок - сильно не пинать Для первого урока неплохо. ИМХО, это будет полезно новичкам +2 в репу
|
|
| |
Assasin | Дата: Воскресенье, 10 Января 2010, 20:31 | Сообщение # 3 |
web-coder
Сейчас нет на сайте
| Quote (Psycho) Какой версии? Adobe Flash CS4 Professional По уроку: Для новичков в самый раз, но нужно более подробно описать как создавать кадры на шкале, я то знаю что Ф5, но новички врядли. Плюс однозначно, продолжай также!
|
|
| |
Rollcage | Дата: Понедельник, 11 Января 2010, 13:00 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Quote (шмыга) Code onClipEvent(enterFrame){ _root.dvijenie(); } Об этом можно поподробнее. Просто хочу разобраться. А для того что бы разобраться нужно понимать что пишешь.
|
|
| |
шмыга | Дата: Понедельник, 11 Января 2010, 13:51 | Сообщение # 5 |
постоянный участник
Сейчас нет на сайте
| Обьясняю: для того чтоб мы могли управлять нашим героем, некая фунция должна проверять нажата ли та или инная клавиша. Этим у нас занимаеться функция dvijenie. Причем, вызываться она должна непрерывно начиная с запуска программы, так как нажать клавишу мы можем в любой момент. Для этого мы помещаем на сцену клип с именем Aktion и пишем следующий код Code onClipEvent(enterFrame){ _root.dvijenie(); } А код работает следующим образом. приНаявностиКлипа(в данном случае клип Aktion)((далее идет параметр который указывает сколько раз будет запускаться тело функции)сменаКадра) { запустить функцию с именем dvijenie(); } Т.е. При наличии клипа Aktion на главной сцене, будет вызывться функция dvijenie с частатой обнавления экрана. Частота обнавления экрана выставляеться на вкладке Timeline. Стадартная частота выставлена на 15 кадров/сек Если тебе нужно к примеру что бы функция выполнилась только один раз, то вместо параметра enterFrame пишется параметр load onClipEvent(load){ _root.dvijenie(); } Надеюсь разобрался
|
|
| |
TovTripleZ | Дата: Понедельник, 11 Января 2010, 13:56 | Сообщение # 6 |
Злая ящерка >:3
Сейчас нет на сайте
| Quote (шмыга) jumping =t rue; Я в AS не рублю, но по-моему тут надо не t rue, а true.
Бледные дрыщекролики следят за вами
|
|
| |
Rollcage | Дата: Понедельник, 11 Января 2010, 14:47 | Сообщение # 7 |
участник
Сейчас нет на сайте
| Quote (шмыга) А именно клип будет воспроизводить все кадры и дойдя до кадра с наши кодом будет переходить на метку «shag» таким образом мы получим эфект непрерывной ходьбы персонажа Теперь создадим еще один символ с именем Aktion. Не совсем понятно написано, что мы и где создаём, можно по подробнее пожалуйста. Но как я понял в первом кадре мы должны создать ещё один скрипт и туда вставить gotoAndStop(“shag”); если я не прав поправь меня пожалуйста. Было бы неплохо если бы ты выложил исходник, что бы подсмотреть если что-то непонятно в уроке. Добавлено (11.01.2010, 14:47) --------------------------------------------- Что то у меня не получается. Я залил файл, посмотри и скажи что я не так сделал.
Сообщение отредактировал Rollcage - Понедельник, 11 Января 2010, 14:50 |
|
| |
шмыга | Дата: Понедельник, 11 Января 2010, 14:50 | Сообщение # 8 |
постоянный участник
Сейчас нет на сайте
| Исходник тут! TovTripleZ, да ты прав! Я опечатался:) Rollcage, Глянь в исходнике, если не поймешь, то попытаюсь обьяснить
|
|
| |
Rollcage | Дата: Понедельник, 11 Января 2010, 14:50 | Сообщение # 9 |
участник
Сейчас нет на сайте
| Что то немогу прекрепить файл на форум http://slil.ru/28466827
Сообщение отредактировал Rollcage - Понедельник, 11 Января 2010, 14:54 |
|
| |
шмыга | Дата: Понедельник, 11 Января 2010, 15:07 | Сообщение # 10 |
постоянный участник
Сейчас нет на сайте
| Во первых ошибка была в ковычках - gotoAndPlay(“shag”); Правильный вариант такой - gotoAndPlay("shag"); Во вторых в первом кадре анимации покоя героя нужно было написать команду stop();.Восновном ошибки синтаксические,исправил, все работает. твой исходник
|
|
| |
Rollcage | Дата: Понедельник, 11 Января 2010, 15:07 | Сообщение # 11 |
участник
Сейчас нет на сайте
| Спасибо уже сам разобрался. Там кавычки были не те и 2 опечатки которые я скопировал, поправь свой код для новичков которые будут так же как и я копировать. Строку 9 и 14 Quote jumping =t rue; if (!Key.isDown(Key.UP)){i=0;j umping= false}
|
|
| |
шмыга | Дата: Понедельник, 11 Января 2010, 16:28 | Сообщение # 12 |
постоянный участник
Сейчас нет на сайте
| Rollcage, Ок, ща исправлю. Спасибо что нашел опечатки в тексте Добавлено (11.01.2010, 16:28) --------------------------------------------- Урок №2. В этом уроке мы научим нашего героя передвигаться по сцене И так, начнемс:) Что такое перемещение обьекта во флеше, это прежде всего изменение его координатов Х и У Поэтому, как вы наверно уже догадались, мы будем просто при нажатии клавиши изменять ту или инную координату. Теперь внесу ясность относительно координат. Наша проект имеет определенную рабочую область (белый квадарат ) и точкой начала отсчета координат является левый верхний угол И так если все понятно приступим к написанию кода, а точнее просто добавим пару строк в уже существующий код. i=0; function dvijenie(){ if (Key.isDown(Key.RIGHT)) { colobok._x+=5;// добавленная строка moving=true; } else{ moving=false } if (Key.isDown(Key.UP)){ jumping=true; i++; colobok.gotoAndPlay("j"+i); } if (!Key.isDown(Key.UP)){i=0;jumping=false} if(moving==true){colobok.nextFrame()} if(moving==false and jumping==false){colobok.gotoAndStop("pokoy")} } colobok._x+=5; -//в данной строке координата х мувика colobok увеличивается на 5, т.е. Если до нажатия клавиши координата х была равна 100 то после нажати 105 и наш герой переместится на 5 пикселей вправо Теперь напишем код с помощью которого герой будет передвигаться и влево i=0; function dvijenie(){ if (Key.isDown(Key.LEFT)) { colobok._x-=5; moving=true; } else if (Key.isDown(Key.RIGHT))// перед оператором if добавлено else { colobok._x+=5; moving=true; } else{ moving=false } if (Key.isDown(Key.UP)){ jumping=true; i++; colobok.gotoAndPlay("j"+i); } if (!Key.isDown(Key.UP)){i=0;jumping=false} if(moving==true){colobok.nextFrame()} if(moving==false and jumping==false){colobok.gotoAndStop("pokoy")} } Запустив игру мы видим что при нажатии стрелочки влево герой не разворачивается, а просто пятится назад.Глупо Но это легко исправить. Используем параметр мувие клипа _xscale. Этот параметр можно сравнить с шириной.Для наглядности выберете инструмент FreeTransformTool и поизменяйте ширину мувика. Причем если уменьшать ширину мувика, то он не исчзнет, а отразиться по вертикали. А вот как раз это нам и нужно:)Так как если параметру _xscale присвоить отрицательное значение, произойдет тоже самое. i=0; function dvijenie(){ if (Key.isDown(Key.LEFT)) { colobok._x-=5; moving=true; colobok._xscale= -100; } else if (Key.isDown(Key.RIGHT)) { colobok._x+=5; moving=true; colobok._xscale=100; } else{ moving=false } if (Key.isDown(Key.UP)){ jumping=true; i++; colobok.gotoAndPlay("j"+i); } if (!Key.isDown(Key.UP)){i=0;jumping=false} if(moving==true){colobok.nextFrame()} if(moving==false and jumping==false){colobok.gotoAndStop("pokoy")} } Ну что ж мы научили его ходить и разворачиваться:) На этом пока все. Остальное в след.Уроках
|
|
| |
Rollcage | Дата: Понедельник, 11 Января 2010, 16:59 | Сообщение # 13 |
участник
Сейчас нет на сайте
| Отлично, главное что всё понятно, поставил бы тебе ещё плюс да немогу=(
|
|
| |
шмыга | Дата: Среда, 13 Января 2010, 18:19 | Сообщение # 14 |
постоянный участник
Сейчас нет на сайте
| Урок № 3.В этом уроке герой нуачиться прыгать и сталкиваться с предметами. 1.Подготовка. И так, первое что мы сделаем это создадим еще один мувие клип, поместим его на сцену и дадим ему имя «flor».Это клип будет играть роль пола на который будет падать ГГ и от которого будет отталкиваться при прыжке. 2.Написание кода Чтобы внести ясность рассмотрим все переменные и команды которые будут использоваться. Folling – логическая переменная в которую заноситься true или false в зависимости от состояния героя, т.е. падает он или нет. grav- переменная отвечающая за скорость падение героя. .hitTest(); - команда вычеслющая столкновения обьектов. Перейдем к написанию кода. И начнем с того что обьявим новую функцию и напишем пару строк кода Code function gravity(){ grav++; if ((colobok.hitTest(flor))and(grav+colobok._y>flor._y-flor._height/2-6)) { colobok._y=flor._y-flor._height/2-6; grav=0; falling=false } else { colobok._y+=grav;falling=true; } } ВАЖНО!!!переменную grav нужно обьявить в самом верху програмного кода, следующим образом: var grav =0; Теперь как всегда попробую обьяснить все что здесь написанно в первой строке идет увеличение скорости падения (grav++;) далее проверяеться условие столкновения ГГ с полом. Если условие выполнилось, то мувик героя устанавливаеться на уровень пола, скорость падения обнуляеться grav=0;(благодаря чему ГГ перестает падать) и переменной falling присваевается значение false. Иначе, если условие не выполнелось значит главный герой продолжает падать. т.е. Координата у увеличиваеться (colobok._y+=grav;)и переменной falling присваевается значение true. Ну что ж наша функция готова, осталось ее задействовать. Кликаем на мувик aktion на сцене и дописываем строку. onClipEvent(enterFrame){ _root.dvijenie(); _root.gravity(); } Теперь для наглядности переместите мувик ГГ повыше над полом и запустите проект. Теперь осталось сделать так что бы герой прыгал, для этого изменим код функции dvijenie. …............ if (Key.isDown(Key.UP)){ if (falling==false){// если герой не падает т.е. стоит на полу grav=-13;//переменной гравитации присваиваеться отрицательное значение благодаря чему герой начинает передвигаться вверх по оси у до тех пор пока значение опять не станет положительным. } i++; colobok.gotoAndPlay("j"+i); break; } …........... исходник На этом пожалуй все.
Сообщение отредактировал шмыга - Среда, 13 Января 2010, 18:23 |
|
| |
Rollcage | Дата: Четверг, 14 Января 2010, 21:54 | Сообщение # 15 |
участник
Сейчас нет на сайте
| Очень хорошо, но мне непонятно лишь одно как сделать то что бы он более быстрее притягивался после прыжка?
|
|
| |
шмыга | Дата: Пятница, 15 Января 2010, 13:42 | Сообщение # 16 |
постоянный участник
Сейчас нет на сайте
| Quote Очень хорошо, но мне непонятно лишь одно как сделать то что бы он более быстрее притягивался после прыжка? За это отвечала переменная grav, которая каждую секунду увеличивалась на 1 (grav++;). Для того чтоб герой быстрей падал нужно переменную grav увеличивать не на 1 , а к примеру на 3. (grav+=3; или grav=grav+3;)
|
|
| |
Naigelgog | Дата: Суббота, 16 Января 2010, 09:43 | Сообщение # 17 |
частый гость
Сейчас нет на сайте
| Как тут всё запущенно!
Никто не ждал, а я вернулся. о.о Отныне зовите меня Ауткастом (жалко, что нельзя поменять логин...).
С.Н. Лукин. Turbo Pascal 7.0 Самоучитель для начинающих. Прочитано. Николай Прохоренок. Html, JavaScript, PHP и MySQL.Джентельменский набор Web-мастера. Прочитано 57 страниц из 867.
|
|
| |
Rollcage | Дата: Суббота, 16 Января 2010, 10:12 | Сообщение # 18 |
участник
Сейчас нет на сайте
| Quote (Naigelgog) Как тут всё запущенно! Что именно??? Сделай лучше, тогда и говори.
|
|
| |
шмыга | Дата: Воскресенье, 17 Января 2010, 17:11 | Сообщение # 19 |
постоянный участник
Сейчас нет на сайте
| Quote Как тут всё запущенно! что именно ты имееш ввиду?
|
|
| |
Rollcage | Дата: Пятница, 22 Января 2010, 12:05 | Сообщение # 20 |
участник
Сейчас нет на сайте
| Когда будет продолжение? Добавлено (22.01.2010, 12:05) --------------------------------------------- шмыга, Может расскажешь теперь как сделать скрол?
|
|
| |