Вообщем проблема следующая.
Есть флешка. При наведении курсора начинает двигаться вправо или влево. Когда курсор убирают - картинка медленно возвращается на свое место.
Почти все реализовано
здесь.
Нужно реализовать плавность остановки и начала движения.
Осталось одна проблема. Смена скорости или направления в тот момент, когда наводится курсор мыши во время возвращения картинки в начальное положение.
Т.е. нужно замедлить флешку - остановить - и начать двигать в др направлении или плавно изменить скорость до нужной, если направление то же...
Как реализовать, честно говоря ума не приложу. Сделал все до этого момента.
Хотя в коде могут быть неточности.
Код AS1/AS2:
stop();
Stage.scaleMode = "noScale";
Stage.align = "TL";
pic_mc.useHandCursor = false;
a_b = 0;//значение начального ускорения
a_e = 1;//значение конечного ускорения
a_i = 0.2;//шаг изменения ускорения (резкость/плавность разгона и остановки анимации)
a = a_b;//начальное значение
pic_mc._y = 0;//начальное положение мувика по у
speed = 0.5;// общая скоростьвсе флешки
b_l = -pic_mc._width/2+Stage.width/2;
Stage.addListener(this);
function onResize() {
b_l = -pic_mc._width/2+Stage.width/2;
pic_mc._x = b_l;
logo_mc._y = 0;
tel_mc._y = 0;
if (Stage.width<pic_mc._width) {
logo_mc._x = 0;
tel_mc._x = Stage.width-tel_mc._width;
} else {
logo_mc._x = pic_mc._x;
tel_mc._x = pic_mc._x+pic_mc._width-tel_mc._width;
}
}
onResize();
pic_mc._x = b_l;
pic_mc.onRollOver = function() {
this.allow = true;//флаг - мыша наведена
a = a_b;
};
pic_mc.onRollOut = function() {
this.allow = false;//флаг - мыша не наведена
a = a_e;
};
pic_mc.onEnterFrame = function() {
ind = Stage.width/2-_root._xmouse;//определяется на какую часть флешки наведено
if (this.allow) {
if (_root._xmouse<=Stage.width/2) {
if (pic_mc._x<=-2) {
pic_mc._x += Math.round(speed*a*(ind/100));//скорость у края флешки (меньше знаминатель - больше скорость)
if (a<a_e) {
a += a_i;
}
}
} else {
if (pic_mc._x>=(-pic_mc._width+Stage.width)) {
pic_mc._x -= Math.round(speed*a*(-ind/100));//скорость у края флешки (меньше знаминатель - больше скорость)
if (a<a_e) {
a += a_i;
}
}
}
}
if (!this.allow) {
if (pic_mc._x<b_l) {
pic_mc._x += speed*a;
if ((b_l-pic_mc._x)<20 && a>a_b+.01) {
a -= a_i;
}
}
if (pic_mc._x>b_l) {
pic_mc._x -= speed*a;
if ((pic_mc._x-b_l)<20 && a>a_b+.01) {
a -= a_i;
}
}
}
};
Просьба подсказать сам алгоритм. Может есть какие то примеры похожие. Я не нашел.
Только недавно начал изучать АС и еще не очень им владею.
Спасибо.