Actionscript 3 Starling framework AS3淡出图像删除计时器不工作?
当onLogoComplete计时器停止并调用onCompleteNukerLogo计时器在徽标图像上运行Starling动画fadeTo时,我试图使我的徽标图像淡出。然而,我不明白为什么调用计时器时图像没有消失。FlashBuilder中没有错误,我眼中的代码似乎是正确的 我想要达到的目标。徽标淡入,暂停一秒钟以便观众看到,然后调用kill timer(删除计时器),当最后一个计时器运行时,应该淡出徽标,然后删除孩子。但是,它只是运行,然后删除徽标图像而不褪色 这是我的密码。我做错了什么?或者这是不可能的椋鸟都做一个淡出和淡出Actionscript 3 Starling framework AS3淡出图像删除计时器不工作?,actionscript-3,starling-framework,Actionscript 3,Starling Framework,当onLogoComplete计时器停止并调用onCompleteNukerLogo计时器在徽标图像上运行Starling动画fadeTo时,我试图使我的徽标图像淡出。然而,我不明白为什么调用计时器时图像没有消失。FlashBuilder中没有错误,我眼中的代码似乎是正确的 我想要达到的目标。徽标淡入,暂停一秒钟以便观众看到,然后调用kill timer(删除计时器),当最后一个计时器运行时,应该淡出徽标,然后删除孩子。但是,它只是运行,然后删除徽标图像而不褪色 这是我的密码。我做错了什么?或者
package screens
{
import flash.events.TimerEvent;
import flash.utils.Timer;
import screens.DesktopScreenTitle;
//
import starling.display.Button;
import starling.display.Image;
import starling.display.Sprite;
import starling.events.Event;
import starling.animation.Transitions;
import starling.animation.Tween;
import starling.core.Starling;
import starling.animation.Juggler;
public class StudioScreen extends Sprite
{
//--Images
private var bg:Image;
private var logo:Image;
//--Tweens
private var logoTween:Tween;
//--Timers
private static var callLogoKill:Timer;
private static var nukeLogo:Timer;
public function StudioScreen()
{
super();
this.addEventListener(starling.events.Event.ADDED_TO_STAGE, stageSetup);
}
//-------------------------------------------------------------------------|
//||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//##setup stage------------------------------------------------------------|
private function stageSetup(event:Event):void
{
drawTitle();
callLogoKill = new Timer( 5000 );
callLogoKill.addEventListener( TimerEvent.TIMER, onLogoComplete);
callLogoKill.start();
}
public function onLogoComplete(e:TimerEvent) {
callLogoKill.stop();
nukeLogo = new Timer ( 1000 );
nukeLogo.addEventListener( TimerEvent.TIMER, onCompleteNukeLogo )
nukeLogo.start();
}
public function onCompleteNukeLogo(e:TimerEvent) {
logoTween = new Tween(logo, 1, Transitions.EASE_OUT);
logoTween.fadeTo(0);
Starling.juggler.add(logoTween);
this.removeChild(logo);
nukeLogo.stop();
}
private function drawTitle():void {
drawBG();
drawLogo();
}
private function drawLogo():void {
//Draw Logo
logo = new Image(Assets.getTexture("logoJoyhype"));
logo.x = (stage.stageWidth - logo.width) /2;
logo.y = (stage.stageHeight - logo.height) /2;
logo.alpha = 0;
this.addChild(logo);
//--Tween Logo
logoTween = new Tween(logo, 1, Transitions.EASE_IN);
logoTween.fadeTo(1);
Starling.juggler.add(logoTween);
}
private function drawBG():void {
bg = new Image(Assets.getTexture("yellowBG"));
this.addChild(bg);
}
public function nuke()
{
this.removeChild(bg);
}
}
}
谢谢 正如我看到的,您在启动淡出功能的同时从显示列表中删除徽标: 您的代码:
public function onCompleteNukeLogo(e:TimerEvent) {
logoTween = new Tween(logo, 1, Transitions.EASE_OUT);
// you start fade out here
logoTween.fadeTo(0);
Starling.juggler.add(logoTween);
// you remove logo here ?
this.removeChild(logo);
nukeLogo.stop();
}
也许可以尝试以下方式:
public function onCompleteNukeLogo(e:TimerEvent)
{
logoTween = new Tween(logo, 1, Transitions.EASE_OUT);
// add on complete callback
logoTween.onComplete = oncompleteFadeOut;
logoTween.fadeTo(0);
Starling.juggler.add(logoTween);
nukeLogo.stop();
}
/** called at the end of the fadeOut of the logo **/
public function oncompleteFadeOut():void
{
// remove logo
this.removeChild(logo);
}
哦,我明白了。我甚至在它有机会做我想让它做的事之前就杀了它。谢谢!前几天我刚开始学椋鸟。有很多漂亮的东西需要学习/修补!非常感谢。:)