2011-07-29 4 views
0

as3을 사용하여 플래시로 사이트를 구축 중입니다. 홈 페이지에서 xml 슬라이드 쇼를 구현했지만 페이지를 변경할 때 사라지지 않습니다. 누군가 다른 페이지에서 제거하는 방법을 알려줄 수 있습니까?웹 사이트에서 AS3 슬라이드 쇼 문제

슬라이드 쇼 코드 :

import fl.transitions.Tween; 
import fl.transitions.easing.*; 
import fl.transitions.TweenEvent; 

var my_speed:Number; 
var my_total:Number; 
var my_images:XMLList; 

var my_loaders_array:Array = []; 
var my_success_counter:Number = 0; 
var my_playback_counter:Number = 0; 

var my_slideshow:Sprite = new Sprite(); 
var my_image_slides:Sprite = new Sprite(); 
var my_timer:Timer; 
var my_prev_tween:Tween; 
var my_tweens_array:Array = []; 

var my_xml_loader:URLLoader = new URLLoader(); 
my_xml_loader.load(new URLRequest("slideshow_home.xml")); 
my_xml_loader.addEventListener(Event.COMPLETE, processXML); 


function processXML(e:Event):void 
{ 

var my_xml:XML = new XML(e.target.data); 
my_speed = my_xml. @ SPEED; 
my_images = my_xml.IMAGE; 
my_total = my_images.length(); 

loadImages(); 

my_xml_loader.removeEventListener(Event.COMPLETE, processXML); 
my_xml_loader = null; 

} 

function loadImages():void 
{ 
for (var i:Number = 0; i < my_total; i++) 
{ 

    var my_url:String = my_images[i]. @ URL; 
    var my_loader:Loader = new Loader(); 
    my_loader.load(new URLRequest(my_url)); 
    my_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); 
    my_loaders_array.push(my_loader); 

} 
} 

function onComplete(e:Event):void 
{ 

my_success_counter++; 
if (my_success_counter == my_total) 
{ 

    startShow(); 

} 

var my_loaderInfo:LoaderInfo = LoaderInfo(e.target); 
my_loaderInfo.removeEventListener(Event.COMPLETE, onComplete); 

} 

function startShow():void 
{ 

addChild(my_slideshow); 
my_slideshow.addChild(my_image_slides); 

nextImage(); 
my_timer = new Timer(my_speed*5000); 
my_timer.addEventListener(TimerEvent.TIMER, timerListener); 
my_timer.start(); 

} 

function nextImage():void 
{ 

var my_image:Loader = Loader(my_loaders_array[my_playback_counter]); 
my_image_slides.addChild(my_image); 
my_image.x = (stage.stageWidth - my_image.width)-160; 
my_image.y = (stage.stageHeight - my_image.height)-100; 
new Tween(my_image,"alpha",Strong.easeOut,0,1,1,true); 
my_tweens_array[0] = new Tween(my_image,"alpha",Strong.easeOut,0,1,1,true); 

} 

function timerListener(e:TimerEvent):void 
{ 
hidePrev(); 


my_playback_counter++; 
if (my_playback_counter == my_total) 
{ 
    my_playback_counter = 0; 
} 
nextImage(); 

} 

function hidePrev():void 
{ 

var my_image:Loader = Loader(my_image_slides.getChildAt(0)); 
my_prev_tween = new Tween(my_image,"alpha",Strong.easeOut,1,0,1,true); 
my_prev_tween.addEventListener(TweenEvent.MOTION_FINISH, onFadeOut); 
} 

function onFadeOut(e:TweenEvent):void 
{ 
my_image_slides.removeChildAt(0); 

} 

답변

0
my_slideshow.visible = false; 

유 슬라이드 쇼 보이지 않는 수있는이를 사용.

하지만 슬라이드 쇼가 백그라운드에서 계속 실행되기 때문에 이것은 어리석은 방법입니다.

클래스 레벨 프로그램을 사용하는 경우에는 매우 쉽게 removechild 메소드를 사용하여 스테이지에서 슬라이드 쇼를 제거 할 수 있습니다. 이 방법은 훌륭합니다.

0

별도의 클래스로 만들고 기본 타임 라인에서 인스턴스화하십시오. 이렇게하면 쉽게 제거 할 수 있습니다.