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

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

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

Регистрация: Feb 2011
Сообщений: 2
По умолчанию Дергающееся поле

Здравствуйте создаю флеш ролик для myspace под ubuntu в связке Eclipse+AS IDE+flex_sdk. При добавлении к картинке события MOUSE_MOVE и изменения в нем параметров фильтра изображение начинает дергаться. Причем, это дергание возникает только при параметре wmode="transparent". Если поставить wmode="opaque" дерганье исчезает.
Код добавления ролика на страничку:
PHP код:
<div style="height: 400px; width: 960px; ">
<
object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" style="height: 100%; width: 100%;">
  <
param name="allowScriptAccess" value="never" />
  <
param name="allowNetworking" value="internal" />
  <
param name="movie" value="header.swf" />
  <
param name="wmode" value="transparent" />
<
embed type="application/x-shockwave-flash" allowScriptAccess="never" allowNetworking="internal" src="header.swf" style="height: 100%; width: 100%;" wmode="transparent" />
</
object>
</
div
Поставить wmode="opaque" я не могу из-за особенностей myspace. При непосредственной загрузке swf в браузер мерцания тоже не наблюдается.

С чем это может быть связано и как можно это исправить?

http://www.myspace.com/lastwailtest здесь можно посмотреть корявость ролика.

Код AS3:
package lastwail.header
{
	import flash.filters.BitmapFilterQuality;
	import flash.filters.BitmapFilterType;
	import flash.filters.GradientGlowFilter;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	import mx.core.BitmapAsset;
 
 
	public class Logo 
	{
// this.Parent.GetDisplay() - получает указатель на Sprite главного окна
		private var Parent: Application;
 
 
	[Embed(source="/var/www/Logo.png")]
		private var EmbedLogo: Class;
 
		private var LogoLoader: BitmapAsset;
		private var Glow: GradientGlowFilter;
		private var KAlpha: Number;
		public static const KAlphaMax: Number = 0.7;
		public static const KAlphaMin: Number = 0.5;
 
		private function Fade(Current: Number, From: Number, To: Number): Number 
		{
			var Result: Number = Current + (To - From) * 1000 / (Common.FadeTime() * this.Parent.GetDisplay().stage.frameRate)
 
			if (((Result <= Current) && (Result < To)) || ((Result >= Current) && (Result > To)))
				Result = To;
 
			return Result;
		}
 
 
		public function Logo(P: Application)
		{
			this.Parent = P;
 
			this.LogoLoader = new EmbedLogo();
 
			this.KAlpha = 1;
 
			Glow = new GradientGlowFilter();
 
			Glow.distance = 0;
			Glow.angle = 45;
			Glow.colors = [0x0000FF, 0xFF0000];
			Glow.alphas = [0, KAlphaMax];
			Glow.ratios = [0, 255];
			Glow.blurX = 0;
			Glow.blurY = 0;
			Glow.strength = 0;
			Glow.quality = BitmapFilterQuality.HIGH;
			Glow.type = BitmapFilterType.OUTER;
 
			this.LogoLoader.x = (this.Parent.GetDisplay().stage.stageWidth - this.LogoLoader.width) / 2;
			this.LogoLoader.y = 15; 
 
			this.Paint();
 
			this.LogoLoader.filters = [Glow];
			this.Parent.GetDisplay().stage.addEventListener(MouseEvent.MOUSE_MOVE, this.OnMouseMove);
		}
 
		private function OnMouseMove(event: MouseEvent):void
		{
			var MX: Number = event.stageX;
			var MY: Number = event.stageY;
 
 
			Glow.blurX = this.KAlpha * 127 *  Math.exp(-5 * Math.abs(MX 
					- (this.LogoLoader.x + this.LogoLoader.width / 2)) / (this.Parent.GetDisplay().stage.stageWidth));
			Glow.blurY = this.KAlpha * 127  * Math.exp(-5 * Math.abs(MY 
				- (this.LogoLoader.y + this.LogoLoader.height / 2)) / (this.Parent.GetDisplay().stage.stageHeight));
 
			Glow.strength = this.KAlpha * 7 * Math.exp(-0.004 * (255 - (Glow.blurX + Glow.blurY)));
 
			this.LogoLoader.filters = [Glow]; // Комментируем эту строчку - дергание прекращается
		}
 
		public function FadeIn(E: Event): void
		{			
			this.KAlpha = Fade(this.KAlpha, KAlphaMin, KAlphaMax); 
			Glow.alphas = [0, this.KAlpha]; 
			this.LogoLoader.filters = [Glow];	
 
			if (this.KAlpha >= 1)
				this.Parent.GetDisplay().removeEventListener(Event.ENTER_FRAME, this.FadeIn);
 
 
		}
		public function FadeOut(E: Event): void
		{
			this.KAlpha = Fade(this.KAlpha, KAlphaMax, KAlphaMin);
 
			Glow.alphas = [0, this.KAlpha]; 
 
			this.LogoLoader.filters = [Glow];				
 
			if (KAlpha <= 0.5)
				this.Parent.GetDisplay().removeEventListener(Event.ENTER_FRAME, this.FadeOut);									
 
		}
 
		public function OnResizeDisplay(e: Event): void
		{
			if (this.Parent.GetDisplay().stage.stageHeight < Common.DefaultHeight())
			{
				this.Parent.GetDisplay().removeEventListener(Event.ENTER_FRAME, this.FadeOut);									
				this.Parent.GetDisplay().addEventListener(Event.ENTER_FRAME, this.FadeIn);
			}						
			else
			{ 
				this.Parent.GetDisplay().removeEventListener(Event.ENTER_FRAME, this.FadeIn);
				this.Parent.GetDisplay().addEventListener(Event.ENTER_FRAME, this.FadeOut);
			}										
		}
 
		private function Paint(): void
		{
			this.Parent.GetDisplay().addChild(this.LogoLoader);
		}
 
	}
}
Вложения
Тип файла: zip test.zip (5.0 Кб, 22 просмотров)

Старый 23.02.2011, 17:42
GemiBillyBob вне форума Посмотреть профиль Отправить личное сообщение для GemiBillyBob Найти все сообщения от GemiBillyBob
  № 2  
Ответить с цитированием
GemiBillyBob

Регистрация: Aug 2010
Адрес: Харьков, Украина
Сообщений: 42
У меня дергались мувики при наложении эффектов, справился установлением сразу этих же эффектов с нулевой альфой.

Старый 23.02.2011, 23:23
rodnover вне форума Посмотреть профиль Отправить личное сообщение для rodnover Найти все сообщения от rodnover
  № 3  
Ответить с цитированием
rodnover

Регистрация: Feb 2011
Сообщений: 2
Спасибо. Буду знать.. Кстати, оставлю, наверно. как есть. Потому что у всех опрошенных после обеда сегодня перестало дергаться. (хотя утром сразу 3 человека сказали, что есть косяк.)

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

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

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


 


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


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