我通过从库中加载一些页面(here)
中的更多细节来制作菜单每个页面都有一个动画。这就像一扇门打开和关闭,几乎像this。 我已使用此代码删除旧页面并添加新页面:
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的第一次认真体验,所以我对动作不太了解。
更新
这是我尝试使用计时器,以便延迟删除旧页面:
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:
我尝试使用带有2个单元格的数组。 当我单击每个按钮时,DisplayObject将被添加到数组中,并调用一个函数来检查数组的其他单元格是否包含对象。 如果它包含一个对象,它将被删除。
我尝试为我的想法编写代码,但它没有正确添加和删除对象的数据!
答案 0 :(得分:0)
最简单:setTimeout()
。不完美,但它会解决你的问题。最好的方法是知道新动画是否已完成,但它会为您提供某种复杂的解决方案。这是最简单的,但不要过度使用它,因为它有它的弱点。
答案 1 :(得分:0)
如果每个页面上都有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
}