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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.10.2011, 20:54
MadEx вне форума Посмотреть профиль Отправить личное сообщение для MadEx Найти все сообщения от MadEx
  № 1  
Ответить с цитированием
MadEx

Регистрация: Dec 2005
Сообщений: 20
Question Глючная анимация.

Здравствуйте!

Разрабатываю флешку для сайта. Посмотреть можно тут http://94.229.12.216/ Так вот, соты должны увеличиваться при наведении (плавно, анимированно, красиво) и уменьшаться в обратном направлении так же плавно и красиво, когда мышку убираешь. Я сделал анимацию с помощью твинов, но вот незадача: если активно поёрзать мышкой по сотам, то они начинают сдвигаться с места. Причем чем дольше ставишь duration для tween'а, тем больше вероятность что сота уползет в сторону.

Вот код класса соты:
Код AS3:
package main{
	import flash.display.MovieClip;
	import flash.events.Event; 
    import flash.events.MouseEvent; 
	import flash.net.*;
	import flash.filters.*;
	//import fl.motion.Animator;
	//import flash.display.Sprite;
	import fl.transitions.Tween;
 	import fl.transitions.easing.*;
 	import fl.transitions.TweenEvent;
 	import flash.text.TextField;
 	import flash.geom.Point;
 
	dynamic public class sota extends MovieClip{
	var Tweens = new Array();
	var Picture = new MovieClip();
	public var Title:String = "";
	public var Desc:String = "";
	public var Link:String = "";
 
 
		public function sota() {
			// constructor code
			buttonMode = true;
			useHandCursor = true;
			addEventListener(MouseEvent.ROLL_OVER, SotaEnter);
			addEventListener(MouseEvent.ROLL_OUT, SotaLeave);
			addEventListener(MouseEvent.CLICK, gotourl);
 
		}
		public function getPicture(pic:MovieClip):void {
			Picture = pic;
		}
		public function setTitle(titl:String):void {
			Title = titl;
		}
		public function setDesc(titl:String):void {
			Desc = titl;
		}
		public function setLink(titl:String):void {
			Link = titl;
		}
		public function SotaEnter(e:MouseEvent):void {		
			// Поднимаем соту выше остальных
			this.parent.addChildAt(this, parent.numChildren-1);
 
			(parent.parent as MovieClip).desc.text = Desc;
			title.text = Title;
			Tweens[8] = new Tween(plashka, "alpha", Strong.easeOut, 0, 1, 1, true);
 
			addChildAt(title, numChildren-1);
			if(Picture.name != Picture.parent.getChildAt(Picture.parent.numChildren-1).name) {
				Picture.parent.addChildAt(Picture, Picture.parent.numChildren-1);
				var myTween:Tween = new Tween(Picture, "alpha", Strong.easeOut, 0, 1, 1, true);
			}
 
			// Запишем анимацию увеличения соты
 
			Tweens[0] = new Tween(contur, "scaleX", Back.easeOut, 1, 1.2, 10, false);
			Tweens[1] = new Tween(contur, "x", Back.easeOut, contur.x, contur.x-0.1*contur.width, 10, false);
			Tweens[2] = new Tween(contur, "scaleY", Back.easeOut, 1, 1.2, 10, false);
			Tweens[3] = new Tween(contur, "y", Back.easeOut, contur.y, contur.y-0.1*contur.height, 10, false);
			Tweens[4] = new Tween(maska, "scaleX", Back.easeOut, 1, 1.2, 10, false);
			Tweens[5] = new Tween(maska, "x", Back.easeOut, maska.x, maska.x-0.1*maska.width, 10, false);
			Tweens[6] = new Tween(maska, "scaleY", Back.easeOut, 1, 1.2, 10, false);
			Tweens[7] = new Tween(maska, "y", Back.easeOut, maska.y, maska.y-0.1*maska.height, 10, false);
 
 
			// Добавляем фильтр свечения
			// Параметры свечения
			var color:Number = 0x33CCFF;
            var alpha:Number = 0.8;
            var blurX:Number = 8;
            var blurY:Number = 8;
            var strength:Number = 2;
            var inner:Boolean = false;
            var knockout:Boolean = false;
            var quality:Number = BitmapFilterQuality.HIGH;
 
			// Сам фильтр
            var filterG = new GlowFilter(color,
                                  alpha,
                                  blurX,
                                  blurY,
                                  strength,
                                  quality,
                                  inner,
                                  knockout);
 
			// Добавляем фильтр в список фильтров
			filters = [filterG];
			trace("up");
 
		}
		public function SotaLeave(e:MouseEvent):void {
 
			for each (var myTween in Tweens) {
				myTween.yoyo();
			}
 
			// Очищаем значение фильтра
			filters = [];
			title.text = '';
			trace("down");
		}
		public function gotourl(e:MouseEvent) {
		   		var my_request:URLRequest = new URLRequest(Link);
		   		navigateToURL(my_request, "_self");
		}
	}
 
}
Сами соты представляю собой картинки с масками в виде соты и контуром соты:
http://cl.ly/3p262n2d1j3Q171D3x3s


У кого-нибудь есть идеи по поводу данного глюка?


Последний раз редактировалось MadEx; 28.10.2011 в 20:56.
Старый 28.10.2011, 21:24
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 2  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Потому что пока твин не завершен, у свойств объекта одни значения, когда завершен, уже другие, а если твин запустить пока он еще не завершился, то новые значения добавляются не к исходным, а к тем, что есть на данный момент.
+ Стандартные твины сами по себе, мягко говоря, не очень. Лучше использовать greensock tweenlitte или tweenmax, или caurina tweener

Старый 28.10.2011, 21:25
dsQuadro вне форума Посмотреть профиль Отправить личное сообщение для dsQuadro Посетить домашнюю страницу dsQuadro Найти все сообщения от dsQuadro
  № 3  
Ответить с цитированием
dsQuadro
 
Аватар для dsQuadro

Регистрация: Feb 2008
Адрес: Москва
Сообщений: 238
Отправить сообщение для dsQuadro с помощью ICQ
если сделать начало координат в центре соты и не двигать ее при анимации, а только масштабировать эта проблема должна пропасть, но со временем они и масштабироваться начинают криво...

Старый 01.11.2011, 13:54
MadEx вне форума Посмотреть профиль Отправить личное сообщение для MadEx Найти все сообщения от MadEx
  № 4  
Ответить с цитированием
MadEx

Регистрация: Dec 2005
Сообщений: 20
Цитата:
Сообщение от dsQuadro Посмотреть сообщение
если сделать начало координат в центре соты и не двигать ее при анимации, а только масштабировать эта проблема должна пропасть, но со временем они и масштабироваться начинают криво...
А как мне перенести начало координат в центр соты? На сколько я понял - твин всё равно от левого вернхнего угла будет масшабироваться - поэтому двигать его обязательно.

Старый 01.11.2011, 14:20
Vektor вне форума Посмотреть профиль Отправить личное сообщение для Vektor Найти все сообщения от Vektor
  № 5  
Ответить с цитированием
Vektor
 
Аватар для Vektor

Регистрация: May 2008
Адрес: Новокузнецк
Сообщений: 219
Записей в блоге: 1
Жестко, установите, начальные координаты, для клипов, и в конце анимации, устанавливайте клип на место.
__________________
Книги и желание лучшие учителя.

Старый 01.11.2011, 14:25
MadEx вне форума Посмотреть профиль Отправить личное сообщение для MadEx Найти все сообщения от MadEx
  № 6  
Ответить с цитированием
MadEx

Регистрация: Dec 2005
Сообщений: 20
Цитата:
Сообщение от Vektor Посмотреть сообщение
Жестко, установите, начальные координаты, для клипов, и в конце анимации, устанавливайте клип на место.
Я пробовал сделать так:
При добавлении соты взять начальные координаты контура и маски и записать в глобальную переменную.
В событие SotaLeave после выполнения анимации вернуть соту на место. Т.е. видимо надо попробвать эту операцию выполнить в событии Motion.STOP ?

Добавлено через 5 часов 27 минут
Разобрался с пененосом центра координат и соты убегать перестали

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

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

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


 


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


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