Просмотр полной версии : нужна стробирующая функция
Добрый день, флешеры.
Есть вот такой вот вопросик: как на AS сделать стробирующую функцию для мувика? Например:
9 кадров mc._visible=true;
9 кадров mc._visible=false;
8 кадров mc._visible=true;
8 кадров mc._visible=false...
... и так до нуля.
Можно и с _alpha (мне всё равно). Количество кадров должно задаваться во входных параметрах.
Спасибо за помощь.
З.Ы. А если можно, то и совместить с плавным уходом _alpha до нуля :)
Можно поставить прямо в мувике в нужных кадрах this._alpha = 0; или ... =100;
А можно допустим проверять на onEnterFrame() на каком кадре находится в данный мувик (короче отслеживать _currentframe)
Так вот в этом то и проблема - можно ли сделать это циклом, т.е. коротким кодом. А ослеживание у меня действительно пойдет через _currentframe, т.к. анимация сделана полностью на AS - onEnterFrame...
Отсюда входные параметры функции:
мувик;
длительность (как в первом посте).
Есть ли мысли насчет кода?
ты говоришь что анимация сделана с помощью As , тогда про какие кадры ты говоришь ?
Вот пример кода (лежит в первом и единственном фрейме):
var n = 0;
this.onEnterFrame = function() {
if (n == 0) { //Начальные параметры
this.karta._x = 180;
this.firm._x = -50;
this.wap._alpha = 0;
ramka._yscale = 100;
}
if (n==5) { //Начало анимации
tweenOut (karta,180,60,45);
tweenOut (firm,-50,60,45);
}
//Тут остальная анимация
n++;
if (n == 300) {
n = 0;
}
};
Переменная n если не ошибаюсь - номер кадра? :confused:
ну если n это номер кадра, тогда не пойму суть вопроса, когда у тебя по сути и есть то что ты спрашиваешь ...
ага, фигушки. _currentframe трейсит 1 на протяжении всей анимации. Тогда вопрос жэ возникает, по какому принципу устанавливается скорость анимации (у меня нету setInterval ни в одной строчке)...
... АлкогОль - причина всех бед...
_currentframe можно определить только у мувиков созданных в ручную с определённым количеством кадров, а если ты просто с помощью кода двигаешь мувик куда нить , то никаких физических кадров тут нет ...
А то что трейсит 1 то это зничит что в муве кот ты двигаешь только оди кадр или несколько, но на первом стоит stop(); ... короче давай исход ...
Код лежит чуть выше (5ый пост), я просто вырезал оттуда значительную часть анимации, она построена на mx.transitions.easing:
function tweenOut(mc, begin, end, frames) {
Tween = new mx.transitions.Tween(mc, "_x", mx.transitions.easing.Regular.easeOut, begin, end, frames);
}
function tweenIn(mc, begin, end, frames) {
Tween = new mx.transitions.Tween(mc, "_x", mx.transitions.easing.Regular.easeIn, begin, end, frames);
}
остальная анимация типа такого:
if (n>120 && n<180){
wap._alpha +=2;
}
Кадр у меня один, несколько слоёв. Исходник прилагается.
Смольный (Smolniy)
20.07.2005, 00:23
Сильно подозреваю, что результат тебя не устроит - больно он неубедительный. Надо дорабатывать, но это уж ты сам.
Допиши в конце твоего кода в 1-м кадре
_root.createEmptyMovieClip("code", 500000);
_root.code.step = 0;
_root.code.maxstep = 9;
_root.code.onEnterFrame = function () {
this.step++;
trace ("step="+this.step)
if (this.step==this.maxstep) {
_root.karta._visible = ! _root.karta._visible;
this.maxstep--;
this.step=0;
if (this.maxstep==0) this.removeMovieClip();
}
}
(p.s. Сорри за банальность :))
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.