Как добавить объект Sprite с анимацией? - PullRequest
0 голосов
/ 18 марта 2012

То, что я собираюсь спросить, может быть совершенно бессмысленным / базовым или что-то еще.Потому что мои знания AS слишком малы.Надеюсь, я смогу правильно объяснить

Я стараюсь динамически создавать анимацию скользящего баннера.Причина, по которой я создаю динамику, заключается в том, что я хочу загружать изображения баннеров и заголовки из файла XML.

Итак, я нашел пример проекта с .as и .xml файлом.Он делает то, что я хочу, но у него нет анимации.Вы можете увидеть демо здесь:
http://active.tutsplus.com/tutorials/actionscript/create-an-image-rotator-in-flash-using-xml-and-actionscript-3-0/

Как видите, внизу есть прозрачная информационная панель.Вот код, как он создается:

private var infoPanel:Sprite = new Sprite();
private var titleField:TextField = new TextField();
private var description:TextField = new TextField();

private function createInfoPanel():void
{
infoPanel.graphics.beginFill(0x000000, 0.5);
infoPanel.graphics.drawRect(0, 0, 967, 138);
infoPanel.graphics.endFill();

titleField.text = xml.children()[infoCounter]. @ title;
titleField.x = 50;
titleField.y = 25;

description.text = xml.children()[infoCounter]. @ description;
description.x = 52;
description.y = 51;

infoPanel.y = 300;

infoPanel.addChild(titleField);
infoPanel.addChild(description);

addChild(infoPanel);
}

Когда я создаю его таким образом, анимация отсутствует, она статична и изменяется только текст.

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

Как я могу это реализовать?Спасибо.

PS Вы можете увидеть весь код в ссылке.

edit: не стесняйтесь взглянуть на мои исходные файлы.
https://rapidshare.com/files/2794372874/Src.rar

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Если вы создаете рекламные баннеры, я бы не стал использовать внешние библиотеки Tween, поскольку они увеличат вес вашего объявления над стандартами IAB (40–50 КБ)

import flash.display.Sprite;
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;
import flash.events.*;

public class Test extends Sprite
{
    private var imageTween:Array = [];
    private var infoPanel:Sprite = new Sprite();

    public function Test()
    {
        imageTween.push(new Tween(infoPanel, 'y', Regular.easeIn, 0, 300, .7, true);
        imageTween[imageTween.length-1].addEventListener(TweenEvent.MOTION_FINISH, removeTween);
    }
    private function removeTween(e:TweenEvent):void
    {
        e.target.removeEventListener(TweenEvent.MOTION_FINISH, removeTween);
        imageTween = [];
    }
}

Вам просто нужно помнить, чтобы ваши анимации были в месте, где сборщик мусора не может их получить (в массиве), иначе они будут сметены до того, как они закончат работу: (

0 голосов
/ 19 марта 2012

Создание анимации с помощью кода обычно достигается с помощью твининг-движка. Вот один из них: TweenLite .

Итак, если вы хотите, чтобы infoPanel пришло снизу:

infoPanel.y = 400; //position from where animation begins; x stays the same
TweenLite.to(infoPanel, 1.2 /* seconds */, {y:300});

Затем вы можете использовать свойство delay для запуска другой анимации после определенной задержки:

description.alpha = 0;
TweenLite.to(description, 0.5, {alpha: 1, delay: 1.2});

Также не забудьте import com.greensock.*; в начале урока.

...