PDA

Просмотр полной версии : програмное движение/ изменение


mariaiva
09.07.2004, 16:58
Подскажите пож-та, как сделать программно плавое движение/изменение..... хочется сделать это в функции, которая могла-бы вызываться из любого места клипа....

Greben
09.07.2004, 17:03
Например:

var blurMe = true;
var step = 5;

function blur() {
if ((this._alpha>=0) && (blurMe == true)) {
this._alpha -= step;
} else {
blurMe = false;
}
if ((this._alpha<=100) && (blurMe == false)) {
this._alpha += step;
} else {
blurMe = true;
}
}
this.onEnterFrame = this.blur;

Iv
09.07.2004, 22:15
http://www.sharedfonts.com/tests/001mac_menu.html

- здесь сделана вся анимация с помощью одной функции (ниже).
Параметры ее просты:
prop - строка, название свойства. например "_x"
targ - число, значение к которому должно стремиться свойство.
friction - число от 0 до 1, сопротивление среды. - необязательный параметр, по умолчанию имеет значение 0.3
elasticity - число от 0 до 1, эластичность. - необязательный параметр, по умолчанию имеет значение 0.95.


Object.prototype.elasticProp = function(prop, targ, friction, elasticity) {
var n = (this._target+prop), e = arguments.callee, t = clearInterval(e[n]), t = this, step, friction = 1-(friction || e.friction), elasticity = elasticity || e.elasticity, intr = e[n]=setInterval(function () {
step += (targ-t[prop])*elasticity, t[prop] += (step *= friction);
if (Math.abs(step)>.05 || Math.round(t[prop]) != Math.round(targ)) {
return;
}
t[prop]=targ, clearInterval(intr), t.onElasticPropEnd(prop, targ);
}, 10);
};
// set Default values of elasticProp
elasticProp.friction = .3;
elasticProp.elasticity = .95;

ПРИМЕР использования:

сделай мувик и повесть на него
onClipEvent(load) {
this.elasticProp("_x", 200, .4, .9)
}

- затем меняй аргументы и смотри что получится.

++ по достижении нужного результата, функция вызывает функцию в том же объекте, с именем onElasticPropEnd.

например добавь:

onClipEvent(load) {
this.onElasticPropEnd = function () {
trace(arguments)
}
}