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

Astraport 02.10.2011 21:06

Как лучше организовать анимированный флип картинки?
 
Картинки создаются динамически. При этом рубашка меняется собственно на картинку.
Желательно чтобы одна за другой переворачивались, с задержкой.
При этом у меня флексовский Spark:)

Данные по картам хранятся в массиве cardsArray, но в коде ниже я пока их не использую, заменив для теста.
Пробовал с Твиннером, но картинка получается после переворота в зеркальном отражении:

Код AS3:

elementCount = this.numElements;
for (var i:uint = 0; i<cardsArray.length; i++){
        var delayC:uint = 0.15;
        card = new Image();
        card.source = 'images/cards/' + String(Number(i + 1)) + '.jpg';
        card.x = i*100+30;
        card.y = 200;
        card.width = 123;
        card.height = 192;
        card.filters = [new DropShadowFilter(1, 45, 0x000000, 0.8, 8, 8, 1)];
        this.addElementAt(card, elementCount+i);
 
        this.getElementAt(elementCount - cardsArray.length + i).visible = true;
        TweenLite.to(this.getElementAt(elementCount - cardsArray.length + i),0.5,{scaleX:-1, overwrite:false});
        TweenLite.to(this.getElementAt(elementCount - cardsArray.length + i),0,{alpha:0,delay:delayC, overwrite:false});
        TweenLite.to(card,0.5,{scaleX:-1, overwrite:false, onComplete:hidden(this.getElementAt(elementCount - cardsArray.length + i))});
        TweenLite.to(card,0,{alpha:1,delay:delayC, overwrite:false});
        card.addEventListener(MouseEvent.CLICK, cardClick);
        delaeC += i/2;
                                }

Можно ещё раз scaleX сделать по окончании, но может быть есть более изящный вариант?

Wolsh 02.10.2011 21:37

Что-то такое?
http://flasher.ru/forum/showthread.php?t=148900

Astraport 02.10.2011 21:49

Wolsh, ой спасибо, удружил. Это вообще круто выглядит. Правда пока код не смотрел.

Добавлено через 25 минут
Все выглядит, конечно, замечательно. Но нет ли примера для более общего случая?

Wolsh 02.10.2011 22:45

Ну можно же отразить картинки сразу, ДО переворота, и твинить скейлы не от 1 до -1, а наоборот от -1 до 1.

Astraport 03.10.2011 13:57

Можно, работает, но...

А ещё не подскажите, почему в моем примере не работает delay в TweenLite? Все карты переворачиваются одновременно. Я же пытаюсь, с помощью увеличивающегося delay сделать это последовательно, одна за другой.

Wolsh 03.10.2011 14:11

Наверное потому что delay:delayC, а инкремент у Вас для непонятной переменной – delaeC += i/2;

Astraport 03.10.2011 14:27

Нет, не поэтому. Это я ошибся, когда от руки дописывал. Извиняюсь, невнимательно торопился.

Wolsh 03.10.2011 14:38

А, вот же оно –
Код AS3:

var delayC:uint = 0.15;

у Вас находится ВНУТРИ цикла, то есть при каждом витке (для каждой карты) снова "обнуляется", и инкремент не происходит. Вынесите за for..

Добавлено через 1 минуту
И это... uint вообщето "беззнаковое ЦЕЛОЕ" и не может быть дробью))))

Astraport 03.10.2011 15:07

Цитата:

у Вас находится ВНУТРИ цикла, то есть при каждом витке (для каждой карты) снова "обнуляется", и инкремент не происходит. Вынесите за for..
И это... uint вообщето "беззнаковое ЦЕЛОЕ" и не может быть дробью))))
Опять же это все погрешности ручной набивки на форуме. В тестовом приложении у меня delayC:Number и находится вне цикла. Тем не менее нет задержки в открытии карт - открываются все одновременно.

Wolsh 03.10.2011 15:38

Обратитесь к телепатам.

Astraport 03.10.2011 15:49

Цитата:

Обратитесь к телепатам.
И на том спасибо:)


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

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