Заранее извиняюсь, что размещаю тут пост, но в начинающих мне не ответили (
Есть у меня 9 квадратиков, они движутся по координатам, которые я задаю в массиве coord, движения сделал функцией movieSquare.
Вот код:
1. stop();
2. import mx.transitions.*;
3. import mx.transitions.easing.*;
4 .movieSquare = function(tween,namen,maxX,maxY,interval){
5. var tween = new Tween(namen, "_y", None.easeOut, namen._y, maxY, interval, true);
6. var tween = new Tween(namen, "_x", None.easeOut, namen._x, maxX, interval, true);
7. }
8.
9. for (i=1;i<=9;i++){
10. var movieName = _root["square_"+i];
11. var tweenName = ["tween_"+i];
12. movieSquare(tweenName,movieName,coord[i].endX,coord[i].endY,2.8);
13. }
Теперь, мне нужно, чтобы когда на окончательное место прибыл 5 квадрат, запустить следующую анимацию, и когда все закончились - то еще одну.
Пробовал вставить в функцию после var tween (6 строчка)
tween_5.onMotionFinished=function(){....} (после анимации пятого квадрата)
tween_9.onMotionFinished=function(){....} (после всех анимаций квадратов)
ничего не выходит... функция не воспринимает эту строку.
может подскажите, как можно решить эту траблу. Заранее благодарен!
Что я не помню, что бы ваша тема была в начинающих.
Что значит "функция не воспринимает эту строку"? Какую строку и какая функция? И к чему нам ваша нумерация строк, мы потом должны вручную их убирать? Комменты надо просто писать.
вчера в 14-46 :-) писал пост этот!
ну если в тупую прописать:
stop();
import mx.transitions.*;
import mx.transitions.easing.*;
var tween_1 = new Tween(square_1, "_y", None.easeOut, square_1._y, 230, 3.5, true);
var tween_1 = new Tween(square_1, "_x", None.easeOut, square_1._x, 327, 3.5, true);
var tween_2 = new Tween(square_2, "_y", None.easeOut, square_2._y, 230, 3.5, true);
var tween_2 = new Tween(square_2, "_x", None.easeOut, square_2._x, 377, 3.5, true);
var tween_3 = new Tween(square_3, "_y", None.easeOut, square_3._y, 230, 3.5, true);
var tween_3 = new Tween(square_3, "_x", None.easeOut, square_3._x, 427, 3.5, true);
var tween_4 = new Tween(square_4, "_y", None.easeOut, square_4._y, 280, 3.5, true);
var tween_4 = new Tween(square_4, "_x", None.easeOut, square_4._x, 327, 3.5, true);
var tween_5 = new Tween(square_5, "_y", None.easeOut, square_5._y, 280, 3.5, true);
var tween_5 = new Tween(square_5, "_x", None.easeOut, square_5._x, 377, 3.5, true);
var tween_6 = new Tween(square_6, "_y", None.easeOut, square_6._y, 280, 3.5, true);
var tween_6 = new Tween(square_6, "_x", None.easeOut, square_6._x, 427, 3.5, true);
var tween_7 = new Tween(square_7, "_y", None.easeOut, square_7._y, 330, 3.5, true);
var tween_7 = new Tween(square_7, "_x", None.easeOut, square_7._x, 327, 3.5, true);
var tween_8 = new Tween(square_8, "_y", None.easeOut, square_8._y, 330, 3.5, true);
var tween_8 = new Tween(square_8, "_x", None.easeOut, square_8._x, 377, 3.5, true);
var tween_9 = new Tween(square_9, "_y", None.easeOut, square_9._y, 330, 3.5, true);
var tween_9 = new Tween(square_9, "_x", None.easeOut, square_9._x, 427, 3.5, true);
tween_5.onMotionFinished=function(){
действие
}
в таком случае, действие мое работает, после того, как закончилось движение 5-го квадрата, а функцию и цикл, я сделал, чтобы кода меньше было. Так вот когда функцией делаю движения всех квадратов - так не могу отследить конец движения 5-го квадрата, чтобы началось мое действие. Наверное, плохо обьясняю я.. (
Вот так я упростил свой код, написанный выше
stop();
import mx.transitions.*;
import mx.transitions.easing.*;
movieSquare = function(tween,namen,maxX,maxY,interval){
var tween = new Tween(namen, "_y", None.easeOut, namen._y, maxY, interval, true);
var tween = new Tween(namen, "_x", None.easeOut, namen._x, maxX, interval, true);
tween_5.onMotionFinished=function(){
действие
}
}
for (i=1;i<=9;i++){
var movieName = _root["square_"+i];
var tweenName = ["tween_"+i];
movieSquare(tweenName,movieName,coord[i].endX,coord[i].endY,2.8);
}
stop();
import mx.transitions.*;
import mx.transitions.easing.*;
movieSquare = function(tween,namen,maxX,maxY,interval){
var tween1 = new Tween(namen, "_y", None.easeOut, namen._y, maxY, interval, true);
var tween2 = new Tween(namen, "_x", None.easeOut, namen._x, maxX, interval, true);
return tween1;
}
for (i=1;i<=9;i++){
var movieName = _root["square_"+i];
var tween = movieSquare(tweenName,movieName,coord[i].endX,coord[i].endY,2.8);
if (i==5) {
tween.onMotionFinished = function() {
trace(this.obj);
}
}
}
Только смысл отлавливать именно у пятого твина что-то, если они все идут одно время?
я, в дальнейшем, буду брать для каждого мува разные времена на анимацию, тогда будет не одно время...
Спасибо, огромное, работает!
Вопрос, для себя - в функции tween1, tween2, а возвращает функция tween1 - почему?
Ну можно tween2, если хотите, не принципиально. Первый твинит _x, второй _y, по длительности одинаковы. Т.е. без разницы, на какой навешивать onMotionFinished.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.