Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Дергающееся поле (http://www.flasher.ru/forum/showthread.php?t=151159)

rodnover 23.02.2011 16:06

Дергающееся поле
 
Вложений: 1
Здравствуйте создаю флеш ролик для 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);
                }
 
        }
}


GemiBillyBob 23.02.2011 17:42

У меня дергались мувики при наложении эффектов, справился установлением сразу этих же эффектов с нулевой альфой.

rodnover 23.02.2011 23:23

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


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

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