В результате этого урока мы создадим вот такую игрушку:
PS: Когда кто-то добежит до конца, щелкните по экрану, что бы начать заново.
После выполнения этого цикла окно вывода будет выглядеть так:
Цикл — разновидность управляющей конструкции, преднозначеной для организации многоразового повторения набора действий (команд).
Цикл "for".
Синтаксис:
for(переменная=значение; условие; выражение){
команда1;
команда2;
....
командаN:
}
Теперь разберем пошагово как это работает. Допустим у нас есть такой цикл:
for(var i:int=1;i<4;i++){
trace(i);
}
Действия выполняемые этим циклом:
- Проверка верно ли условие i=1; 1<4; -Верно. Идём дальше.
- Выводим i. В данный момент i=1, значит в окне вывода появится "1".
- К i добавляется еденица ( i++ ), i становится равным двум.
- Проверка верно ли условие i=2; 2<4; -Верно. Идём дальше.
- Выводим i. В данный момент i=2, значит в окне вывода появится "2"
- К i добавляется еденица ( i++ ), i становится равным трем.
- Проверка верно ли условие i=3; 3<4; -Верно. Идём дальше.
- Выводим i. В данный момент i=3, значит в окне вывода появится "3"
- К i добавляется еденица ( i++ ), i становится равным четырем.
- Проверка верно ли условие i=4; 4 не меньше 4; -НЕВЕРНО! Цикл окончен.
Теперь попробуем сделать мини-игру из примера в начале урока.
Шаг 1. (Создание персонажей) 1.1 Для начала нарисуте какого-нибудь персонажа, и сделайте из него мувиклип. 1.2 Создайте внутри этого мувиклипа 3 кадра
Первый кадр - персонаж стоит на месте.
Второй кадр - персонаж бежит.
Третий кадр - персонаж победил.
1.3 Добавьте новый слой (Layer 2) и напишите код:
stop();1.4 Вернитесь на главную сцену и скопируйте этого персонажа нужное количество раз . 1.5 Дайте этим персонажам имена типа p1, p2, p3.... (соотвественно первому р1, второму р2 и д.т.) 1.6 Пишем код:
import flash.events.Event;
import flash.events.MouseEvent;
const numPlayer:int = 5;//количество игроков, если у вас их не 5 не забудьте поменять это значение!
addEventListener(Event.ENTER_FRAME,loop);
function loop(e:Event):void
{
for (var i:int=1; i<=numPlayer; i++)
{
root["p"+i].y-=Math.random()*5;/*передвигаем поочередно каждого из 5
персонажей на случайное расстояние от 0 до 5 пикселей*/
root["p"+i].gotoAndStop(2);/*заставляем персонажей "бежать"*/
if (root["p" + i].y <= 23)/*если какой-то из персонажей достиг верха экрана*/
{
root["p" + i].gotoAndStop(3);/*то поставить его на кадр №3*/
trace(i);/*вывести его номер*/
i = 8;/*выйти из цикла*/
removeEventListener(Event.ENTER_FRAME,loop);/*стереть слушатель*/
stage.addEventListener(MouseEvent.CLICK,resetF);/*и добавить слушатель для рестарта*/
}
}
}
function resetF(e:MouseEvent):void
{
/*функция рестарта игры*/
for (var i:int=1; i<=numPlayer; i++)
{
root["p" + i].y = 300;/*возвращаем всех персов на место*/
root["p" + i].gotoAndStop(2);/*и переводим их в кадр бега*/
}
addEventListener(Event.ENTER_FRAME,loop);
stage.removeEventListener(MouseEvent.CLICK,resetF);
}
Если всё еще ничего не понятно, то не расстраивайтесь сейчас я проведу пошаговый тест куска кода, который возвращает персонажей на место, и всё должно встать на свои места.
for (var i:int=1; i<=numPlayer; i++)
{
root["p" + i].y = 300;/*возвращаем всех персов на место*/
root["p" + i].gotoAndStop(2);/*и переводим их в кадр бега*/
}
- Проверка верно ли условие; i=1; 1<5; -Верно. Идём дальше.
(Т.К. i = 1, то root["p" + i].y равняется root["p" + 1].y равняется р1.у) - Ставим персонажа с именем р1 в у=300;
- Переводим персонажа с именем р1 на второй кадр;
- Проверка верно ли условие; i=2; 2<5; -Верно. Идём дальше.
(Т.К. i = 2, то root["p" + i].y равняется root["p" + 2].y равняется р2.у) - Ставим персонажа с именем р2 в у=300;
- Переводим персонажа с именем р2 на второй кадр;
- Проверка верно ли условие; i=3; 3<5; -Верно. Идём дальше.
- Ставим персонажа с именем р3 в у=300;
- Переводим персонажа с именем р3 на второй кадр;
- И ТАК ДАЛЕЕ..
Ну вот, надеюсь теперь всё встало на свои места, но если всё-же есть какие-то вопросы, задавайте!)
Ну вот собственно и всё.
Ах, ну да!
Домашка:
Сделать так, что бы персонажей было не 5 а 3. (Если всё понятно, то это не составит труда).





При таком раскладе перс будет не бежать, а катится как на коньках, ибо не нарисована и не написана смена ног
ОтветитьУдалитьНе совсем понял что имеется ввиду... При каком раскладе? Какая смена ног? И это же не урок о том как создать идеальную игру,а урок по циклу for
УдалитьКак внутри этих мувиклипов создавать анимацию персонажей?
ОтветитьУдалить18 строка i = 8;/*выйти из цикла*/
ОтветитьУдалитьрекомендую сделать так вдруг кто то будет экспериментировать и сделает больше персонажей чем 8
i = numPlayer+1;/*выйти из цикла*/
отличный урок! спасибо огромное!!!
ОтветитьУдалить