mariaiva
09.07.2004, 16:58
Подскажите пож-та, как сделать программно плавое движение/изменение..... хочется сделать это в функции, которая могла-бы вызываться из любого места клипа....
Например:
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;
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)
}
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.