![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Aug 2007
Сообщений: 4
|
Возможно все очень просто , но никак не получается ...
Итак : необходимо сделать "движение" человечка ПРОГРАММНО. путем аттачивания картинок движения левой и правой ноги поочередно взависимости от количества шагов ... По событию нажатия кнопки вызываем функцию Move_to , размещенной в первом (и единственном ) кадре единственного слоя вот скрипт : /// Задаем начальные координаты
koord_x = 200;
delta_x = 25;
/// зададим функцию перемещения человечка по параметам : steps - количество шагов
function Move_to( steps) {
/// организуем цикл по шагам
for (i=1; i<=steps; i++) {
/// если счетчик нечетный - значит шаг ЛЕВОЙ
/// иначе - ПРАВОЙ
if (i%2)
{ type_step = "L";
}
else {type_step = "R";
}
name_movie = "step_"+type_step;
/// аттачим нужную картинку
attachMovie(name_movie,"step_movie_" + i , i );
_root["step_movie_" + i]._x=koord_x;
/// изменяем координаты
koord_x = koord_x + delta_x;
/// если вставить удаление - не успеем увидеть ничего...
/// removeMovieClip("step_movie_" + i);
}
}
gotoAndPlay(1);
Если размещать в одной глубине при аттаче - появляется последняя , если в разных глубинах , то все сразу ... А надо последовательно выводить кадры с определенной паузой , чтобы вывести второй клип только когда закончился проигрываться первый клип . Помогите , плиз . Заранее благодарен. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
>>> если вставить удаление - не успеем увидеть ничего...
ПОТРЯСАЮЩЕ. Вы написали столько кода, без видимых синтаксических ошибок... А Вы ни разу не задумались, ЧТО это Вы делаете? Примерно 200 000 шагов в секунду. Используйте onEnterFrame.
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 14.08.2007 в 13:53. |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
Цитата:
Обычно делаю три состояния. 1) Дефолтное, пассивное, т.е. объект стоит. 2) Движется влево, 3) Движется вправо. И всё. Зачем атачить ноги? Попробуйте изменить-пересмотреть программную логику - будет проще реализовать задуманное. |
|
|||||
|
Действительно, тут явно перебор - атачить ноги. просто прорисовать все возможные варианты перемещения. кстати, так же сделаны модели в КС :-)
__________________
Чтоб понять, что ничего не знаешь - учись. |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 4
|
вообще-то ноги никто и не оттачил ... изначально "движущегося" человечка сделал путем вставки через какое-то количество кадров различных !статических! картинок : 1. человек стоит 2. шагает левой ногой 3. стоит 4. шагает правой 5. стоит но так как на все варианты количества шагов получится слишком много мувиков (соответственно и размер ... ) попытался выводить эти картинки программно ... но похоже поторопился ![]() а про onEnterFrame еще не знаю ... чайник я , чайник можь подскажите ? а получился в результате этого скрипта не супермен а группа шагающих клонов ... забавно! |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 4
|
понимаю , что сам неправильно сформулировал вопрос ...
попытаюсь еще раз : вопрос то был в том , как вывести второй клип только когда закончился проигрываться первый клип . |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
Смотря как вы организовали вложение мувиков и внутреннюю анимацию.
Как вы им управляете, клавишами на клавиатуре или мышкой? |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 4
|
к сожалению пример сейчас не под рукой.
попытаюсь описать : в библиотеку поместил мувик на один шаг , как я описывал ранее (из нескольких статических кадров) далее создал один единственный кадр , в котором разместил кнопку , которая вызывает указанную выше функцию с переданным параметром "Количество шагов"... примерно так. |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
Ну если Вы управляете с клавы (допустим обычный курсор) можно было бы сделать так.
Сделать мувик, а в нем четыре кадра. 1) Стоит(внутренняя анимаци), 2) Идет влево(внутренняя анимаци), 3) Вправо(внутренняя анимаци), 4) Вниз(внутренняя анимаци). По такой функции(просто пример из хелпа) тело ходит: var DISTANCE:Number = 10;
var horn_sound:Sound = new Sound();
horn_sound.attachSound("horn_id");
var keyListener_obj:Object = new Object();
keyListener_obj.onKeyDown = function() {
switch (Key.getCode()) {
case Key.SPACE :
horn_sound.start();
break;
case Key.LEFT :
car_mc._x -= DISTANCE;
break;
case Key.UP :
car_mc._y -= DISTANCE;
break;
case Key.RIGHT :
car_mc._x += DISTANCE;
break;
case Key.DOWN :
car_mc._y += DISTANCE;
break;
}
};
Key.addListener(keyListener_obj);
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|