Попытка анимировать альфа-канал объекта graphics
в AS3 с помощью GreenSock, но функции не работают. Пытаюсь сделать анимацию с альфа-канала 0 на 0,7 за 2 секунды. Метод fromTo();
тоже не работает. Я не хочу, но должен ли я вместо этого использовать инкрементный цикл for, чтобы сделать это? — Поскольку это не даст мне контроля над временем движения.
public function overlayBox():void {
var overlaySquare:Sprite = new Sprite();
overlaySquare.graphics.beginFill(0x00000);
overlaySquare.graphics.drawRect(0, 0, displayRes, displayRes);
overlaySquare.graphics.endFill();
overlaySquare.x = xScreenPos;
overlaySquare.y = yScreenPos;
TweenMax.from(overlaySquare, 2, {autoAlpha:0});
TweenMax.to(overlaySquare, 2, {autoAlpha:0.7});
addChild(overlaySquare);
trace("overlaySquare index: " + getChildIndex(overlaySquare));
}
РЕДАКТИРОВАТЬ: я исправил переход от альфы 0 до 0,7, заменив функции TweenMax сверху на это:
overlaySquare.alpha = 0;
TweenMax.to(overlaySquare, 5, {alpha:0.7});
Однако возникает проблема с альфа-анимацией, когда она запускается вместе с остальной частью программы. Анимация «мигает» и мгновенно становится равной 0,7 (похоже, она «прыгает» от 0 до 0,7), как только вы ее видите. Проблема была изолирована в функции, которая вызывается после overlayBox();
Обзор программы: изображение загружается с помощью загрузчика. Внутри загрузчика есть файл myTimer.start();
. Это используется для запуска остальной части программы после загрузки изображения. overlayBox();
— это первый метод, который следует и работает нормально. Следующий метод, textAnimation();
, ломает его, и я понятия не имею, почему:
public function textAnimation():void {
//set text format
textFormat.font = "Helvetica Neue Light";
textFormat.size = 28;
textFormat.bold = false;
textFormat.color = 0xFFFFFF;
//textFormat.letterSpacing = 5;
//set text size
var size18bold:TextFormat = new TextFormat();
size18bold.size = 36;
size18bold.bold = true;
// pass text format
textOne.defaultTextFormat = textFormat;
textTwo.defaultTextFormat = textFormat;
var xScreenPosStart:Number = xScreenPos + 440;
var xScreenPosEnd:Number = xScreenPos - 300;
textOne.text = "Blah blah blah";
textOne.autoSize = TextFieldAutoSize.LEFT;
textOne.x = xScreenPosStart;
textOne.y = yScreenPos + 240;
TweenMax.to(textOne, 14, {x:xScreenPosEnd, ease:SlowMo.ease.config(1, 0), repeat:-1});
textTwo.text = "Blah blah blah";
textTwo.autoSize = TextFieldAutoSize.LEFT;
textTwo.x = xScreenPosStart;
textTwo.y = yScreenPos + 140;
TweenMax.to(textTwo, 12, {x:xScreenPosEnd, ease:SlowMo.ease.config(1, 0), repeat:-1, delay:4});
//add to stage
addChild(textOne);
trace("textOne index: " + getChildIndex(textOne));
addChild(textTwo);
trace("textTwo index: " + getChildIndex(textTwo));
textOne.setTextFormat(size18bold);
}