我通过从库中加载一些页面(在这里中有更多的细节)创建了一个菜单。
每一页里面都有一个动画。就像门开了又关,就像这一样。我使用此代码删除旧页并添加新页:
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不太了解。
更新:
为了延迟删除旧页面,我尝试使用一个计时器:
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,并调用一个函数来检查数组的其他单元格是否包含一个对象。如果它包含一个对象,它将被移除。
我试图为我的想法编写代码,但它没有正确地向数组中添加和删除对象!
发布于 2014-04-09 20:16:40
最简单的:setTimeout()。不完美,但它会解决你目前的问题。最好的方法是知道新的动画是否已经完成,但它是以某种复杂的解决方案为您。这是最简单的,但不要过度使用它,因为它有它的弱点。
发布于 2014-04-09 20:21:51
如果每个页面上都有一个MovieClip,那么您应该能够在添加新页面之后删除旧页:
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
}https://stackoverflow.com/questions/22972959
复制相似问题