Как использовать Tween для MovieClips в приложении Flex 4.5? - PullRequest
0 голосов
/ 24 августа 2011

Я новичок во Flex и пытаюсь перенести чистую карточную игру Flash / AS3 на Flex 4.5.

Это работает в основном хорошо, но мне не хватает нескольких частей головоломки там:

Я создал пользовательский компонент на основе UIComponent, представляющий колоду карт (которые представляют собой массив спрайтов или мувиклипов):

enter image description here

В оригинальной чистой Flash / AS3 игре я использовал Tween для 3-х карт за столом - чтобы показать пользователю игры, кто положил какую карту (сдвинув их к середине игрового стола):

import fl.transitions.*;
import fl.transitions.easing.*;

public class Deck extends UIComponent {
    private var _card:Array = new Array(3);
    private var _tween:Array = new Array(3);
            ....

    override protected function createChildren():void {
        _tween[YOU] = new Tween(_card[0], 'y', Regular.easeOut, _card[0].y + 40, _card[0].y, .5, true);
        _tween[LEFT] = new Tween(_card[1], 'x', Regular.easeOut, _card[1].x - 40, _card[1].x, .5, true);
        _tween[RIGHT] = new Tween(_card[2], 'x', Regular.easeOut, _card[2].x + 40, _card[2].x, .5, true);
             ....

Однако Flash Builder 4.5, похоже, вообще не знает пакеты fl.transitions. *?

У кого-нибудь есть совет, как использовать Твин здесь?

Как я уже писал, все остальное (мой пользовательский компонент Flex, перемещение спрайтов карт и т. Д.) Работает хорошо. Только строки Твин должны были быть прокомментированы.

Спасибо! Alex

Ответы [ 2 ]

0 голосов
/ 25 августа 2011

Моей первой реакцией колено было добавление flash.swc (поставляется Flash CS Pro) в путь сборки Flex, а затем:

import fl.transitions.*;
import fl.transitions.easing.*;

можно использовать снова.

enter image description here

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

        _tween[0] = _card[0].y;
        _tween[1] = _card[1].x;
        _tween[2] = _card[2].x;
                ....
        _card[0].y = _tween[0] + 20;
        addEventListener(Event.ENTER_FRAME, slideCardYou);

        _card[1].x = _tween[1] - 20;
        addEventListener(Event.ENTER_FRAME, slideCardLeft);

        _card[2].x = _tween[2] + 20;
        addEventListener(Event.ENTER_FRAME, slideCardRight);
                ....

    private function slideCardYou(event:Event):void {
        if (_card[0].y-- < _tween[0]) 
            removeEventListener(Event.ENTER_FRAME, slideCardYou);
    }

    private function slideCardLeft(event:Event):void {
        if (_card[1].x++ > _tween[1]) 
            removeEventListener(Event.ENTER_FRAME, slideCardLeft);
    }

    private function slideCardRight(event:Event):void {
        if (_card[2].x-- < _tween[2]) 
            removeEventListener(Event.ENTER_FRAME, slideCardRight);
    }

Также я посмотрел на mx.effects.Tween и spark.effects.Animate, но они кажутся более подходящимидля компонентов UIC, а не спрайтов, как в моем случае.

0 голосов
/ 24 августа 2011

Взгляните на класс Tweener в Google Code.С его помощью вы можете указать и объект, и карту его свойств и их желаемых значений вместе со временем, и он будет «подгонять» эти свойства от их текущих до желаемых значений.

Tweener.addTween(yourCard, {y:50, time:1});//for a 1 second tween 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...