Форум 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)
-   -   перемещение по таймлайну используя якоря (http://www.flasher.ru/forum/showthread.php?t=115927)

DJ_Baton 15.09.2008 18:39

перемещение по таймлайну используя якоря
 
В общем смысл такой, сделать кнопки при которых запускался EnterFrame скрипт перемещения по таймлайну, если позиция больше якоря отнимать, если меньше прибавлять:
Код:

                if (_currentframe>"FrameLebel") {
                        _currentframe--;
                }
                if (_currentframe<"FrameLebel") {
                        _currentframe++;
                }

Соответственно FrameLebel - имя якоря на таймлайне.
Как такое реализовать во 2-м экшн скрипте ?

AlexDesinger 15.09.2008 19:27

Код:

var ok:Boolean = false
my_btn.onPress = function(){
ok = true
}
this.onEnterFrame = function(){
if(ok){
//ваш код
}
}


DJ_Baton 15.09.2008 20:04

Хм... А если в таком варианте...
Помогите найти в чем ошибка
Код:

stop();
var b_pressed = false;
var zzz;
onEnterFrame = function () {
        trace(b_pressed+"  "+_root._currentframe);
        if (b_pressed && _root._currentframe<zzz) {
                _root.gotoAndStop(_root._currentframe+1);
        } else if (!b_pressed && _root._currentframe>1) {
                _root.gotoAndStop(_root._currentframe-1);
        }
};
mb1.onRelease = function() {
        zzz = 1;
        b_pressed = !b_pressed;
};
mb2.onRelease = function() {
        zzz = 15;
        b_pressed = !b_pressed;
};
mb3.onRelease = function() {
        zzz = 30;
        b_pressed = !b_pressed;
};
mb4.onRelease = function() {
        zzz = 45;
        b_pressed = !b_pressed;
};

zzz - переменная отвечающая за тот фрейм куда надо перейти, mb1, mb2, mb3, mb4 - кнопки которые меняют переменную и говорят куда идти

Скрипт работает но происходит следующее - при первом клике оно переходит куда надо, при повторном откатывает таймлайн в первый кадр, вместо того чтобы переходить к тому кадру куда было сказано, т.е. находясь на 15-м и нажав на 30-й оно откатывает на 1-й вместо того чтобы перейти плавно с 15-го в 30-й (((((

DJ_Baton 15.09.2008 21:11

Извеняюсь за флуд....
блин вроде по логике всё просто но ничерта не работает :(:(:(
Код:

mb1.onRelease = function() {
    onEnterFrame = function () {
          if (_root._currentframe>1) {
              _root._currentframe--; //Если кадр больше нужного отнимаем
          }
          if (_root._currentframe<1) {
              _root._currentframe++;//Если кадр меньше нужного наращиваем
          }
    };
};

mb2.onRelease = function() {
    onEnterFrame = function () {
          if (_root._currentframe>15) {
              _root._currentframe--; //Если кадр больше нужного отнимаем
          }
          if (_root._currentframe<15) {
              _root._currentframe++;//Если кадр меньше нужного наращиваем
          }
    };
};

mb3.onRelease = function() {
    onEnterFrame = function () {
          if (_root._currentframe>30) {
              _root._currentframe--; //Если кадр больше нужного отнимаем
          }
          if (_root._currentframe<30) {
              _root._currentframe++;//Если кадр меньше нужного наращиваем
          }
    };
};

создаю несколько таких кнопок но ничерта не работает, почему ???
функция вроде простая, если меньше двигаемся по таймлайну вперед, если больше назад

iNils 15.09.2008 21:55

_currentframe только для чтения.
Надо использовать gotoAndStop () или gotoAndPlay ()

DJ_Baton 15.09.2008 22:15

Цитата:

Сообщение от iNils (Сообщение 764329)
_currentframe только для чтения.
Надо использовать gotoAndStop () или gotoAndPlay ()

Спасибо огромное, не думал что всё так банально, всегда gotoAndPlay юзал для жесткого перемещения

Вот посмотри правильно функцию написал ? (походу работает вроде :) )

Код:

stop();
i = _root._currentframe;
mb1.onRelease = function() {
        onEnterFrame = function () {
                if (_root._currentframe>15) {
                        _root._currentframe = gotoAndPlay(i--);
                }
                if (_root._currentframe<15) {
                        gotoAndPlay(i++);
                }
                if (_currentframe=15) {
                        stop();
                }
        };
};

mb2.onRelease = function() {
        onEnterFrame = function () {
                if (_root._currentframe>30) {
                        _root._currentframe = gotoAndPlay(i--);
                }
                if (_root._currentframe<30) {
                        gotoAndPlay(i++);
                }
                if (_currentframe=30) {
                        stop();
                }
        };
};


Mnilionic 16.09.2008 01:21

вы к свойству, которое только для чтения присваиваете значение функции, которая ничего не возвращает :)
Код:

stop();
function check(x) {
        if (_currentframe > x) prevFrame();
        else if (_currentframe < x) nextFrame();
        else {stop(); delete onEnterFrame;}
};
mb1.onRelease = function() {
        onEnterFrame = function(){ check(15); }
};
mb2.onRelease = function() {
        onEnterFrame = function(){ check(30); }
};


DJ_Baton 16.09.2008 05:01

Mnilionic, огромное спасибо, не представляешь как помог


Часовой пояс GMT +4, время: 14:08.

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