![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2008
Сообщений: 4
|
Доброго времени суток! возникла проблема при использовании данной функции. Моя задача - сделать плавное перемещение муви клипов (они есть на текущем кадре). Написал такую фукнцию:
function moveText(currentX, currentY, targetX, targetY, needSpeed, currentAlpha, targetAlpha, AlphaSpeed, count, targetcount, needMcName, intervalSpeed,timeDelay) {
var secondTimeInterval:Number;
var intervalId:Number;
function zaderjka():Void {
clearInterval(secondTimeInterval);
function poexali():Void {
count++;
currentX += (targetX-currentX)/needSpeed;
currentY += (targetY-currentY)/needSpeed;
currentAlpha += (targetAlpha-currentAlpha)/AlphaSpeed;
setProperty(needMcName, _x, currentX);
setProperty(needMcName, _y, currentY);
setProperty(needMcName, _alpha, currentAlpha);
if (count>targetcount) {
clearInterval(intervalId);
count = 0;}
}
intervalId = setInterval(poexali, intervalSpeed);
}
secondTimeInterval = setInterval(zaderjka, timeDelay);
};
Все работает на ура, если вызывать ее один раз, если вызвать эту функцию еще раз moveText(mc._x, mc._y, 450, mc._y, 350, 0, 200, 700, 1, 1200, mc, 7,3000); moveText(sec._x, sec._y, 450, sec._y, 350, 0, 200, 700, 1, 1200, sec, 7,120000); Подскажите, как можно выйти из этой ситуации? есть идея создавать каждый раз интервалы с другим именем, например добавляя к ним имя мувика, но идеи как это реализовать нет.... ![]() вот тут немного покопался в нете, нашел про циклическое создание переменных, что попытался реализовать в своей функции, вот что вышло: var timeDelay:Number;
var secondTimeInterval:Number;
var intervalId:Number;
var count:Number;
var targetcount:Number = 1000;
var needMcName:MovieClip;
var targetX:Number;
var targetY:Number;
var currentX:Number;
var currentY:Number;
var needSpeed:Number;
var targetAlpha:Number;
var currentAlpha:Number;
var alphaSpeed:Number;
var intervalSpeed:Number = 7;
var kol:Number=2;
function moveText(currentX, currentY, targetX, targetY, needSpeed, currentAlpha, targetAlpha, AlphaSpeed, count, targetcount:Number, needMcName:MovieClip, intervalSpeed,timeDelay,kol:Number) {
function zaderjka():Void {
clearInterval(_root["secondTimeInterval"+_root.kol]);
function poexali():Void {
count++;
currentX += (targetX-currentX)/needSpeed;
currentY += (targetY-currentY)/needSpeed;
currentAlpha += (targetAlpha-currentAlpha)/AlphaSpeed;
setProperty(needMcName, _x, currentX);
setProperty(needMcName, _y, currentY);
setProperty(needMcName, _alpha, currentAlpha);
if (count>targetcount) {
clearInterval(_root["intervalId"+_root.kol]);
count = 0;}
}
_root["intervalId"+_root.kol] = setInterval(poexali, intervalSpeed);
}
_root["secondTimeInterval"+_root.kol] = setInterval(zaderjka, timeDelay);
trace(_root["secondTimeInterval"+_root.kol]);
trace(_root["intervalId"+_root.kol]);
trace(_root.kol);
};
moveText(mc._x, mc._y, 450, mc._y, 350, 0, 200, 700, 1, 1200, mc, 7,500,1);
kol пробовал и с _рутом и просто писать... результат такой же.. немного непонятно, почему в функцию не передается kol, хотя если другие параметры, такие как currentX, currentY, targetX, targetY, needSpeed и т.д. передаются нормально ? .... Последний раз редактировалось iNils; 12.02.2008 в 18:45. |
|
|||||
|
хм.. а зачем нужно устанавливать интервал для одноразового вызова внутренней функции?
|
|
|||||
|
Регистрация: Feb 2008
Сообщений: 4
|
Один интервал (secondTimeInterval) нужен для задержки перед выполнением функции, в которой второй интервал (intervalId) циклически гоняет мой мувик
|
|
|||||
|
зачем передавать столько параметров!
это уже ошибка. Не может быть такой фунцкии, в которую надо передавать более 4-5 параметров (иногда нужно ), тем более передавать внутренние переменные. Почему бы их не объявить внутри функций.По первому коду: при втором вызове скорее всего переменная интервала перезатирается и первый интервал не останавливается никогда. про второй: И если вы уже стали передавать столько переменных, то зачем их было нужно передавать, чтобы потом обращатся к ним через корень! 8( (это я про рут.кол) |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 4
|
Да, параметров конечно в самом деле много
но т.к. как они все нужны вижу только один способ - сделать какую-нить подфункцию ...По первому коду - да, она то останавливается, но работает не так как нужно... с дерганием, как-будто перекрывается А про рут, это уже были отчаянные действия.... так как функция в упор не видела эту переменную |
|
|||||
|
[+3 19.07.07]
|
cardexc, почитайте здесь: http://blog.greensock.com/tweenliteas2
а с интервалами повнимательней - перед тем как вызвать его ещё раз, очищайте вызов предидущего с помощью клеарИнтервал...
__________________
Самый великий программер - БОГ! |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 4
|
Aisaid
да, будем внимательней а за ссылку спасибо, почитаю |
|
|||||
|
Регистрация: Jan 2008
Сообщений: 35
|
Цитата:
__________________
qubstudio.com |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:47. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|