Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как правильно анимированить? (http://www.flasher.ru/forum/showthread.php?t=127494)

nOobCrafter 15.07.2009 13:32

Как правильно анимированить?
 
Вложений: 1
День добрый, есть задача, нужно программно анимировать элемент что бы он двигался к какой то точке, а после этого двигался обратно. Казалось бы все просто, но задача усложняется тем что таких елементов много, вот пример действий:
Код AS1/AS2:

var endTween:Boolean = false;
 
 
mc.onRollOver = sectionOver;                                // при наведении на пункт раздела запускаем анимацию...
 
function sectionOver():Void
{
        endTween = false;
 
        var ArrowX:Tween = new Tween(this.smallArrow, "_x", None.easeOut, this.smallArrow._x, this.smallArrow.targetX, TIME_A / 2, true);
                ArrowX.onMotionFinished = function()
                {
                        if(!endTween)
                        {
                                ArrowX.yoyo();
                        } else {
                                ArrowX.stop();
                        }
                }

этот вариант хорош когда элемент один, а когда их много то возникают проблемы с флагами, нужно для каждого делать по своему флагу, чтот весьма геморно. Хорошо было бы сделать обьекту св-во и в него записывать нужное состояние, но из твина до обьекта не достучишься. Так что я несколько зашел в тупик.
-------------------------------
Собсна эта логика анимации нормальная? или лучше использовать что то другое, в голову приходит по тому же событию onMotionFinished запускать еще несколько твинов играющих в обратном направлении или пользоватьс setTimeout, имхо послдених 2 варианта более корявые в исполнении. Кто что может посоветовать?
Вот пример:

dimarik 15.07.2009 13:38

Зачем Вам в принципе состояние объекта?

nOobCrafter 15.07.2009 13:44

Код AS1/AS2:

textX.onMotionFinished = function()
          {
              if(!this.endTween)  // вот так нельзя..хотя очень хотелось бы
              {
                    textX.yoyo();
                    endTween = true;
              } else {
                    textX.stop();
              }
          }

...вот так думалось

dimarik 15.07.2009 13:48

Кстати, зря Вы так говорите, что из твина не достучаться до твинируемого объекта.

Гляньте реализацию класса в {system_drive}\{user}\AppData\Local\Adobe\Flash CS3\en\Configuration\Classes\mx\transitions\Tween. as


Код AS1/AS2:

public var isPlaying:Boolean;
public var obj:Object;

Этого, думаю, хватит.

nOobCrafter 15.07.2009 13:53

dimarik ага спс большое, тогда все легко решается)..


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

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