Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Простенькая задачка с AttachMovie (http://www.flasher.ru/forum/showthread.php?t=99824)

_Andruxa_ 14.08.2007 12:38

Простенькая задачка с AttachMovie
 
Возможно все очень просто , но никак не получается ...

Итак : необходимо сделать "движение" человечка ПРОГРАММНО.
путем аттачивания картинок движения левой и правой ноги поочередно взависимости от количества шагов ...

По событию нажатия кнопки вызываем функцию 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);

по нажатию кнопки "все" работает , картинки появляются , НО!
Если размещать в одной глубине при аттаче - появляется последняя ,
если в разных глубинах , то все сразу ...
А надо последовательно выводить кадры с определенной паузой ,
чтобы вывести второй клип только когда закончился проигрываться первый клип .

Помогите , плиз .
Заранее благодарен.

Wolsh 14.08.2007 13:38

>>> если вставить удаление - не успеем увидеть ничего...

ПОТРЯСАЮЩЕ. Вы написали столько кода, без видимых синтаксических ошибок... А Вы ни разу не задумались, ЧТО это Вы делаете? Примерно 200 000 шагов в секунду.
Используйте onEnterFrame.

Molecula 14.08.2007 14:16

Цитата:

200 000 шагов в секунду
Мож так и задумывалось - это супермен бежит!

Обычно делаю три состояния. 1) Дефолтное, пассивное, т.е. объект стоит. 2) Движется влево, 3) Движется вправо.

И всё. Зачем атачить ноги? Попробуйте изменить-пересмотреть программную логику - будет проще реализовать задуманное.

ToXICus 14.08.2007 14:58

Действительно, тут явно перебор - атачить ноги. просто прорисовать все возможные варианты перемещения. кстати, так же сделаны модели в КС :-)

_Andruxa_ 14.08.2007 18:03

:D
вообще-то ноги никто и не оттачил ...
изначально "движущегося" человечка сделал путем вставки через какое-то количество кадров различных !статических! картинок : 1. человек стоит 2. шагает левой ногой 3. стоит 4. шагает правой 5. стоит

но так как на все варианты количества шагов получится слишком много мувиков (соответственно и размер ... ) попытался выводить эти картинки программно ...
но похоже поторопился :mosking:

а про onEnterFrame еще не знаю ... чайник я , чайник
можь подскажите ?

а получился в результате этого скрипта не супермен :bb: а группа шагающих клонов ... забавно!

_Andruxa_ 14.08.2007 18:12

понимаю , что сам неправильно сформулировал вопрос ...
попытаюсь еще раз :
вопрос то был в том , как вывести второй клип только когда закончился проигрываться первый клип .

Molecula 14.08.2007 18:29

Смотря как вы организовали вложение мувиков и внутреннюю анимацию.
Как вы им управляете, клавишами на клавиатуре или мышкой?

_Andruxa_ 14.08.2007 18:55

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

Molecula 14.08.2007 19:08

Ну если Вы управляете с клавы (допустим обычный курсор) можно было бы сделать так.
Сделать мувик, а в нем четыре кадра.
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, время: 01:12.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.