Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.03.2007, 11:11
Odyssus вне форума Посмотреть профиль Отправить личное сообщение для Odyssus Найти все сообщения от Odyssus
  № 1  
Ответить с цитированием
Odyssus
[6 07.05.06]
 
Аватар для Odyssus

Регистрация: Dec 2005
Сообщений: 98
По умолчанию Как отследить, когда заканчивается движение в функции

Заранее извиняюсь, что размещаю тут пост, но в начинающих мне не ответили (
Есть у меня 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(){....} (после всех анимаций квадратов)
ничего не выходит... функция не воспринимает эту строку.
может подскажите, как можно решить эту траблу. Заранее благодарен!

Старый 21.03.2007, 11:24
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Что я не помню, что бы ваша тема была в начинающих.
Что значит "функция не воспринимает эту строку"? Какую строку и какая функция? И к чему нам ваша нумерация строк, мы потом должны вручную их убирать? Комменты надо просто писать.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 21.03.2007, 11:57
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 3  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от iNils
Что я не помню, что бы ваша тема была в начинающих.
http://flasher.ru/forum/showthread.php?t=93394

Старый 21.03.2007, 12:02
Odyssus вне форума Посмотреть профиль Отправить личное сообщение для Odyssus Найти все сообщения от Odyssus
  № 4  
Ответить с цитированием
Odyssus
[6 07.05.06]
 
Аватар для Odyssus

Регистрация: Dec 2005
Сообщений: 98
вчера в 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);
	}

Старый 21.03.2007, 12:24
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Код:
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);
		}
	}
}
Только смысл отлавливать именно у пятого твина что-то, если они все идут одно время?

Старый 21.03.2007, 13:00
Odyssus вне форума Посмотреть профиль Отправить личное сообщение для Odyssus Найти все сообщения от Odyssus
  № 6  
Ответить с цитированием
Odyssus
[6 07.05.06]
 
Аватар для Odyssus

Регистрация: Dec 2005
Сообщений: 98
я, в дальнейшем, буду брать для каждого мува разные времена на анимацию, тогда будет не одно время...
Спасибо, огромное, работает!
Вопрос, для себя - в функции tween1, tween2, а возвращает функция tween1 - почему?

Старый 21.03.2007, 13:11
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Ну можно tween2, если хотите, не принципиально. Первый твинит _x, второй _y, по длительности одинаковы. Т.е. без разницы, на какой навешивать onMotionFinished.

Старый 21.03.2007, 13:45
Odyssus вне форума Посмотреть профиль Отправить личное сообщение для Odyssus Найти все сообщения от Odyssus
  № 8  
Ответить с цитированием
Odyssus
[6 07.05.06]
 
Аватар для Odyssus

Регистрация: Dec 2005
Сообщений: 98
Все, понял, спасибо огромное!

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:06.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.