首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3延迟消除displayObject

AS3延迟消除displayObject
EN

Stack Overflow用户
提问于 2014-04-09 20:08:39
回答 2查看 186关注 0票数 0

我通过从库中加载一些页面(在这里中有更多的细节)创建了一个菜单。

每一页里面都有一个动画。就像门开了又关,就像一样。我使用此代码删除旧页并添加新页:

代码语言:javascript
复制
import flash.display.MovieClip;
import flash.display.DisplayObject;

var currentPage:DisplayObject;

 btn_msg.addEventListener(MouseEvent.CLICK, ShowMessagePage);

function ShowMessagePage(event:MouseEvent):void
{
  removeCurrentPage(); // remove the old page
  var msg_page:MessagePage = new MessagePage();
     addChild(msg_page); // load new page

     msg_page.x = 495;
     msg_page.y = 323;
     currentPage = msg_page; // keep track of the current page
}

问题是,在关上门之前,它就把旧页拿掉了。是否有可能延迟移除旧页?这是我第一次认真体验flash,所以我对actionscript不太了解。

更新:

为了延迟删除旧页面,我尝试使用一个计时器:

代码语言:javascript
复制
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.display.DisplayObject;
import flash.utils.Timer;
import flash.events.TimerEvent;


var currentPage:DisplayObject;
var msg_page:MessegePage = new MessegePage();
var gallery_index:GalleryPage = new GalleryPage();
var film_index:FilmGallery = new FilmGallery();

var myTimer:Timer = new Timer(9000,1);

myTimer.addEventListener(TimerEvent.TIMER, removeCurrentPage);

btn_msg.addEventListener(MouseEvent.CLICK, ShowMessegePage);
btn_img.addEventListener(MouseEvent.CLICK, ShowGalleryPage);
btn_film..addEventListener(MouseEvent.CLICK, ShowFilmPage);

function ShowMessegePage(event:MouseEvent):void
{   
addChild(msg_page);
msg_page.x = 495;
msg_page.y = 323;
msg_page.gotoAndPlay("msg");
currentPage = msg_page;
myTimer.start();
}

function ShowGalleryPage(event:MouseEvent):void
{
addChild(gallery_index);
gallery_index.x = 495;
gallery_index.y = 323;
gallery_index.gotoAndPlay("indexofgallery");
currentPage = gallery_index;
myTimer.start();
}

function ShowFilmPage(event:MouseEvent):void
{
addChild(film_index);
film_index.x = 495;
film_index.y = 323;
film_index.gotoAndPlay("film");
currentPage = film_index;
myTimer.start();    
 }

 function removeCurrentPage(event:TimerEvent):void
{

if(currentPage && currentPage.parent)
{
    currentPage.parent.removeChild(currentPage);
}
StopTimer();
}

function StopTimer():void
{
myTimer.stop();
}

但是它删除了正在加载的新页面!我想我应该保持旧的一页.

更新2:

我试过用两个单元的数组。当我单击每个按钮时,将向数组中添加一个DisplayObject,并调用一个函数来检查数组的其他单元格是否包含一个对象。如果它包含一个对象,它将被移除。

我试图为我的想法编写代码,但它没有正确地向数组中添加和删除对象!

EN

回答 2

Stack Overflow用户

发布于 2014-04-09 20:16:40

最简单的:setTimeout()。不完美,但它会解决你目前的问题。最好的方法是知道新的动画是否已经完成,但它是以某种复杂的解决方案为您。这是最简单的,但不要过度使用它,因为它有它的弱点。

票数 0
EN

Stack Overflow用户

发布于 2014-04-09 20:21:51

如果每个页面上都有一个MovieClip,那么您应该能够在添加新页面之后删除旧页:

代码语言:javascript
复制
function ShowMessagePage(event:MouseEvent):void
{
     var msg_page:MessagePage = new MessagePage();
     addChild(msg_page); // load new page

     removeCurrentPage(); // remove the old page

     msg_page.x = 495;
     msg_page.y = 323;
     currentPage = msg_page; // keep track of the current page
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22972959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档