Форум 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=139376)

Into the Dark 29.04.2010 14:43

Рывки при масштабировании
 
Доброе время суток.

Пытаюсь сделать что то типа наезда камерой, при помощи масштабирования

Код AS3:

var timer:Timer = new Timer(100, 30);
function stopper(event:TimerEvent):void {
    switch (timer.currentCount) {
        case 5this.Fon_2.scaleX = 1.1;
                this.Fon_2.scaleY = Fon_2.scaleX;
                break;
        case 10
                this.Fon_2.scaleX = 1.2;
                this.Fon_2.scaleY = Fon_2.scaleX;
                break;
        case 15
                this.Fon_2.scaleX = 1.3;
                this.Fon_2.scaleY = Fon_2.scaleX;
                break;
        case 20:
                this.Fon_2.scaleX = 1.4;
                this.Fon_2.scaleY = Fon_2.scaleX;
                break;
        case 25:
                this.Fon_2.scaleX = 1.5;
                this.Fon_2.scaleY = Fon_2.scaleX;
                break;
        case 30:
                timer.stop();
                timer.reset();
                break;
                }
        }

Но когда срабатывает функция масштабирование идет рывками, а хочется плавный наезд и потом затемнение экрана.
Помогите пожалуйста как можно это реализовать?

marat_sa 29.04.2010 15:00

Эм... Может твинер какой-нить заюзаете или хотя бы onEnterFrame?

Ну или хоть так...
Код AS3:

function stopper(event:TimerEvent):void {
    Fon_2.scaleX = Fon_2.scaleY = 1 + timer.currentCount / 50;
}


mickfallout 29.04.2010 15:16

Код AS3:

    switch (timer.currentCount) {
        case 5this.Fon_2.scaleX = 1.1;
                this.Fon_2.scaleY = Fon_2.scaleX;
                break;
        case 10
                this.Fon_2.scaleX = 1.2;
                this.Fon_2.scaleY = Fon_2.scaleX;
                break;
        case 15
                this.Fon_2.scaleX = 1.3;
                this.Fon_2.scaleY = Fon_2.scaleX;
                break;
        case 20:
                this.Fon_2.scaleX = 1.4;
                this.Fon_2.scaleY = Fon_2.scaleX;
                break;
        case 25:
                this.Fon_2.scaleX = 1.5;
                this.Fon_2.scaleY = Fon_2.scaleX;
                break;
        case 30:
                timer.stop();
                timer.reset();
                break;
                }

уж если и юзать таймер, то зачем так сложно? не проще ли:
Код AS3:

        if (timer.currentCount<30) {
                this.Fon_2.scaleX = 1+(0.1*timer.currentCount/5);
                this.Fon_2.scaleY = Fon_2.scaleX;
        }else{
                timer.stop();
                timer.reset();
        }

Добавлено через 7 минут
вариант с enterFrame:
Код AS3:

package  {
 
        import flash.display.*
        import flash.events.*
        public class Main extends Sprite {
                private var sprite:Sprite = new Sprite();
                private var counter:int = 0;
                public function Main()
                {
                        super();
                        addChild(sprite);
                        sprite.graphics.beginFill(0x00CCFF);
                        sprite.graphics.drawCircle(200, 200, 200);
                        sprite.graphics.endFill();
                        sprite.addEventListener(Event.ENTER_FRAME, handler);
                }
                private function handler(event:Event):void
                {
                        sprite.scaleX = sprite.scaleY = (100 - counter) / 100;
                        sprite.x = sprite.y = counter++ * 2;
                        if (counter >= 100)
                        {
                                removeChild(sprite);
                                sprite.removeEventListener(Event.ENTER_FRAME, handler);
                        }
                }
        }
}


PsixokoT 29.04.2010 15:29

еще как совет, если объект сложный то лучше использовать трансформацию матрицей.

Into the Dark 29.04.2010 19:32

Спасибо вам огромное !!
Блин неграмотность подводит ((. Глупые ошибки

А как экран в черный покрасить постепенно? С альфой нужно ?

marat_sa 29.04.2010 21:41

Ну либо прямоугольник черный накладывайте сверху и изменяй его alpha от 0 до 1. Либо изменяйте прозрачность целевого объекта от 1 до 0. Как Вам удобнее.


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

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