2013-05-19 79 views
0

這是一個腳本,當我點擊一個對象時,它會打開一個帶有頁面翻轉效果的小書。腳本,設置對象不可見

我完成了幾乎所有的事情,但我希望當我點擊後退按鈕時,所有desapears和我回到只看到原始對象。它不工作,因爲它只刪除其中一頁!我嘗試做一個數組,但它也沒有工作,我也不太好陣列。誰能幫忙?

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; 
} 

回答

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()加續作爲容器的孩子volta()

pages.addChild(cont); 

然後:

您加載頁面之前添加到您的代碼的頂部

pages.visible = false; 

如果你使用這種方法,不要忘記調用setChildIndex()on容器內FlipPage()

pages.setChildIndex(DisplayObject(e.currentTarget), this.numChildren - 1); 
+0

順便說一句你有什麼IDEIA我怎樣可以把頁面空白時,我翻轉?當我翻轉它變白時它顯示我剛翻轉的頁面的反射。 – user2397976

+0

@ user2397976您需要爲包含正面圖像和背面圖像的每個頁面創建一個容器。那麼你需要檢查每一幀的旋轉。如果旋轉大於90且小於270,則將後圖像的子索引設置爲numchildren - 1.如果旋轉大於270或小於90,則將前圖像的子索引設置爲numchildren - 1.如果您需要更多幫助理解,請將此作爲一個單獨問題,我可以給您一個更徹底的例子。 – bwroga