0

これは、オブジェクトをクリックしたときのスクリプトです。ページめくり効果のある小さな本が開きます。

私はほとんどすべてを終えましたが、戻るボタンをクリックするとすべてが消え、元のオブジェクトだけが表示されるようになりたいです。ページの1つだけを削除するため、機能していません! 私は配列をやろうとしましたが、どちらもうまくいきませんでしたし、配列もあまり得意ではありません。誰でも助けることができますか?

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

もう 1 つの方法は、すべての画像をコンテナー スプライトに追加し、コンテナー スプライトを非表示にすることだけです。

ページをロードする前に、これをコードの先頭に追加します。

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 に答える