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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.09.2010, 16:10
Dr_Bra вне форума Посмотреть профиль Отправить личное сообщение для Dr_Bra Посетить домашнюю страницу Dr_Bra Найти все сообщения от Dr_Bra
  № 1  
Ответить с цитированием
Dr_Bra
 
Аватар для Dr_Bra

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
По умолчанию Анимация с помощью tween, несколько твинов на 1 объект.

Делаю аквариум )) рыбка плавает по о.X с помощью твина, хочу чтобы при наведении курсора на аквариум рыба "испугалась" и резко отплыла (применяю то же твин). Но случается баг, как только рыба выполнила второй твин (метод aquariumOver), рыба "скачет" ее просто перебрасывает в какую-то случайную точку. Подскажите как избавится от этого бага.
Код AS3:
package 
{
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.Event;
	import fl.transitions.Tween;
	import fl.transitions.easing.*;
	import fl.transitions.TweenEvent;
	import flash.events.MouseEvent;
 
	public class PoulScript extends MovieClip
	{
		private static var RADIUS:Number = 100;
		private static var SPEED_SCARED = 10;
 
		private var aquarium:MovieClip;
		private var f1:MovieClip;
 
		private var f1TweenX:Tween;
		private var f1TweenY:Tween;
		private var f1scaredTweenX:Tween;
		private var f1scaredTweenY:Tween;
 
		private var f1speed:Number;
		private var f1nextX:Number;
 
		private var f1startingX:Number;
		private var f1startingY:Number;
 
		private var f1scaredX:Number;
		private var f1scaredY:Number;
 
		public function PoulScript():void
		{
			this.addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event):void
		{
			this.removeEventListener(Event.ADDED_TO_STAGE, init);
 
			aquarium = aquarium_mc.aria_mc;
			f1 = aquarium_mc.f1_mc;
 
			f1startingX = f1.x;
			f1startingY = f1.y;
 
			aquarium.addEventListener(MouseEvent.ROLL_OVER, aquariumOver);
			f1randomVolue();
		}
 
		private function f1randomVolue():void
		{
			f1nextX = Math.random() * RADIUS * 2 - RADIUS;
			f1speed = Math.random() * 70 + 80;
 
			if(f1nextX > f1.x) {f1.scaleX = -1;} else {f1.scaleX = 1;}
 
			f1TweenX = new Tween(f1, "x", Strong.easeOut, f1.x, f1nextX, f1speed, false);
			f1TweenX.addEventListener(TweenEvent.MOTION_FINISH, f1moveAgain);
		}
 
		private function f1moveAgain(e:TweenEvent):void
		{
			f1randomVolue();
		}
 
		private function aquariumOver(e:MouseEvent):void
		{
			trace("бойся, рыба!")
 
			f1scaredX = Math.random() * RADIUS * 2 - RADIUS;
			f1scaredY = Math.random() * 50 * 2 - 50;
 
			if(f1scaredX > f1.x) {f1.scaleX = -1;} else {f1.scaleX = 1;}
 
			f1scaredTweenX = new Tween(f1, "x", Strong.easeOut, f1.x, f1scaredX, SPEED_SCARED, false);
			f1scaredTweenY = new Tween(f1, "y", Strong.easeOut, f1.y, f1scaredY, SPEED_SCARED, false);
		}
	}
}
Вложения
Тип файла: swf aqarium.swf (5.5 Кб, 172 просмотров)

Старый 19.09.2010, 16:43
Dr_Bra вне форума Посмотреть профиль Отправить личное сообщение для Dr_Bra Посетить домашнюю страницу Dr_Bra Найти все сообщения от Dr_Bra
  № 2  
Ответить с цитированием
Dr_Bra
 
Аватар для Dr_Bra

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
получается так: рыба плавает себе в простом режиме, при помощи метода f1randomVolue генерируются новые позиции и скорость. И тут вдруг РАЗ, мы навели курсор на аквариум и рыбка резко начала другое движение, с помощью нового твина. И как только она закончила движение с помощью нового твина, рабы "перескакивает" на точку предыдущего (незаконченного) твина

Старый 19.09.2010, 16:48
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 3  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
код не читал. начиная второй твин — прекращай первый. после окончания "паники" рыбки (второй твин finished) просто создавай новый твин спокойного движения.
всегда один твин на одно свойство.
__________________
Поймай яблоко 2!

Старый 19.09.2010, 17:07
Dr_Bra вне форума Посмотреть профиль Отправить личное сообщение для Dr_Bra Посетить домашнюю страницу Dr_Bra Найти все сообщения от Dr_Bra
  № 4  
Ответить с цитированием
Dr_Bra
 
Аватар для Dr_Bra

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
подскажите, как прекращать твин вообще? вот например:
Код AS3:
f1TweenX = new Tween(f1, "x", Strong.easeOut, f1.x, f1nextX, 50, false);
//как прекратить этот твин?
//f1TweenX.finish; // ?

Старый 19.09.2010, 17:22
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 5  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
заходим на http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/
ищем Tween (слева)
смотрим его методы (справа)
находим stop()... он ли это? читаем описание — ТОЧНО! этот метод останавливает твин!

Прошу прощения за сарказм, но есть вещи, которые спрашивать не годится — AS3 имеет прекрасную документацию на русском языке.
__________________
Поймай яблоко 2!

Старый 19.09.2010, 17:26
Dr_Bra вне форума Посмотреть профиль Отправить личное сообщение для Dr_Bra Посетить домашнюю страницу Dr_Bra Найти все сообщения от Dr_Bra
  № 6  
Ответить с цитированием
Dr_Bra
 
Аватар для Dr_Bra

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
спасибо, но лучше бы и там посмотреть, и на форуме переспросить, на всякий пожарный
Код AS3:
f1TweenX.stop();
спасибо за помощь

Старый 19.09.2010, 17:59
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 7  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
но лучше бы и там посмотреть, и на форуме переспросить, на всякий пожарный
Вот именно в таком порядке и только если не помогло первое.

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

Теги
tween , Tween Motion , баг , двойной твин
Опции темы
Опции просмотра

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

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


 


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


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