0

这是一个脚本,当我单击一个对象时,它会打开一本带有翻页效果的小书。

我已经完成了几乎所有的事情,但我希望当我点击后退按钮时,一切都消失了,我回到只看到原始对象。它不起作用,因为它只删除了其中一个页面!我尝试做一个数组,但它也没有工作,而且我对数组也不是很好。任何人都可以帮忙吗?

import fl.transitions.Tween;    
import fl.transitions.easing.*;    
import fl.transitions.TweenEvent;    
import flash.display.Sprite;    
import flash.display.Loader;    
var cont : DisplayObject;    
var cont2 : DisplayObject;    
var imgLoader : Loader;

//loads pages    
for (var i:int=0; i<=4; i++){    
    imgLoader  = new Loader();    
    imgLoader.contentLoaderInfo.addEventListener(Event.INIT, onLoadJPEG);     
    imgLoader.load(new URLRequest(""+i+".png"));    
}

var imgLoader2 : Loader;

//loads back button    
imgLoader2  = new Loader();    
imgLoader2.contentLoaderInfo.addEventListener(Event.INIT, onLoadSketch);     
imgLoader2.load(new URLRequest("voltaatrassketchbook.png"));

function onLoadJPEG (e : Event) : void {    
    cont = e.target.loader;    
    cont.x =250;    
    cont.y =50;    
    cont.width = (445-100)/2;    
    cont.height = (604-100)/2;    
    addChild(cont);    
    cont.addEventListener(MouseEvent.MOUSE_UP, FlipPage);    
}

function onLoadSketch (e : Event) : void {    
    cont2 = e.target.loader;     
    cont2.x =450;    
    cont2.y =300;
    cont2.width = 181/2;    
    cont2.height = 127/2;    
    addChild(cont2);    
    cont2.addEventListener(MouseEvent.MOUSE_UP, volta);
}

function FlipPage(e:MouseEvent):void{    
    setChildIndex(DisplayObject(e.currentTarget), this.numChildren - 1);    
    if (e.currentTarget.rotationY == 0) {    
        var myTween:Tween = new Tween(e.currentTarget, "rotationY", 
            Regular.easeInOut,0, 180, 1, true);
    }

    if (e.currentTarget.rotationY == 180) {    
        var myTween:Tween = new Tween(e.currentTarget, "rotationY", 
            Regular.easeInOut, 180, 0, 1, true);

    }

}

//function to go back    
function volta (e: MouseEvent): void  {    
    gotoAndStop(1);    
    cont.visible=false;    
    cont2.visible=false;
}
4

1 回答 1

0

选项1

你是对的,你可以使用一个数组。在开始加载页面之前,将其放在代码的顶部:

var pages:Array = [];

然后把它作为最后一行放在里面onLoadJPEG()

pages.push(cont);

这将在加载时将每个图像添加到数组中。

然后在volta()你可以循环遍历数组并使每个图像不可见

for(var i:int = 0; i < pages.length; i++) {
    DisplayObject(pages[i]).visible = false;
}

选项 2

另一种方法是将所有图像添加到容器 Sprite 中,然后您所要做的就是使容器 Sprite 不可见。

在加载页面之前将其添加到代码顶部:

var pages:Sprite = new Sprite();
addChild(pages);

然后onLoadJPEG()添加 cont 作为容器的子项

pages.addChild(cont);

然后在volta()

pages.visible = false;

如果您使用这种方法,请不要忘记在容器内部调用 setChildIndex() FlipPage()

pages.setChildIndex(DisplayObject(e.currentTarget), this.numChildren - 1); 
于 2013-05-19T06:23:15.097 回答