2013-05-19 2 views
0

Это сценарий, когда я нажимаю объект, он открывает небольшую книгу с некоторым эффектом сбрасывания страницы.Actionscript, set objects invisible

Я закончил с почти всем, но я хочу, чтобы, когда я нажимаю кнопку «Назад», все исчезает, и я возвращаюсь только к виду исходного объекта. Он не работает, потому что он удаляет только одну из страниц! Я попытался сделать массив, но он тоже не работал, и я не очень хорошо разбираюсь с массивами. Может ли кто-нибудь помочь?

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() надстройкой прод как ребенок контейнера

pages.addChild(cont); 

Тогда в volta():

pages.visible = false; 

Если вы используете этот подход, не забудьте вызвать setChildIndex() on контейнер внутри FlipPage():

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

Btw у вас есть какие-либо Ideia, как я могу положить на пустую страницу, когда я переверните его? Когда я переворачиваю его, чтобы получить белый, он показывает рефлекс страницы, которую я просто щелкнул. – user2397976

+0

@ user2397976 Вам понадобится создать контейнер для каждой страницы, который будет содержать переднее изображение и обратное изображение. Затем вам нужно будет проверить поворот каждого кадра. Если вращение было больше 90 и меньше 270, вы должны установить дочерний индекс обратного изображения в числовое число - 1. Если вращение было больше 270 или меньше 90, вы должны установить дочерний индекс переднего изображения в числовые данные - 1. Если вам нужно больше понимания понимания, задайте это как отдельный вопрос, и я могу привести более подробный пример. – bwroga