Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Ashry
    Registrato dal
    Jul 2002
    Messaggi
    586

    maschera dinamica FlashCS3 AS3

    Salve a tutti, vorrei un' amimazione ,costituita da dei cerchietti posizionati in modo casuale,per far alternare delle immagini, sono riuscita a far comparire le immagini ma non riesco a creare una dissolvenza, nel senso che quando carico la nuova immagine quella vecchia scompare io invece vorrei che restasse sulla stage fino a chè limmagine non è completamente caricata.

    ecco il mio codice xml:
    Codice PHP:
    <slideshow speed="2">
    <
    image url="images/01.jpg" />
    <
    image url="images/02.jpg" />
    <
    image url="images/03.jpg" />
    <
    image url="images/04.jpg" />
    </
    slideshow
    e il codice as3:
    Codice PHP:
    var my_speed:Number;
    var 
    my_total:Number;
    var 
    my_xmlList:XMLList;

    /*counter*/
    var my_playback_counter:Number 0;

    /*creo i contenitori*/
    var my_slideshow:Sprite = new Sprite();
    var 
    maskContainer:Sprite = new Sprite();
    var 
    my_image_slides:Sprite = new Sprite();
    var 
    my_preloaders:Sprite = new Sprite();

    maskContainer.cacheAsBitmap=true;
    my_image_slides.cacheAsBitmap=true;


    var 
    my_timer:Timer;

    /*carico l'xml*/
    var my_xml_loader:URLLoader = new URLLoader();
    my_xml_loader.load(new URLRequest("slideshow-data.xml"));
    my_xml_loader.addEventListener(Event.COMPLETEprocessXML);

    function 
    processXML(e:Event):void {

        var 
    my_xml:XML = new XML(e.target.data);
        
    my_speed=my_xml.@SPEED;
        
    my_xmlList=my_xml.IMAGE;
        
    my_total=my_xmlList.length();
        
    my_xml_loader.removeEventListener(Event.COMPLETEprocessXML);
        
    my_xml_loader null;
        
    createContainer();
        
    callImages(0);

        
    my_timer = new Timer(my_speed*2000);
        
    my_timer.addEventListener(TimerEvent.TIMERtimerListener);
        
    my_timer.start();

    }

    function 
    createContainer():void {
        
    addChild(my_slideshow);
        
    my_slideshow.x=0;
        
    my_slideshow.addChild(my_image_slides);
        
    my_image_slides.0;
        
    my_slideshow.addChild(my_preloaders);
    }

    function 
    callImages(num:int):void {
        
    my_image_slides.addChild(maskContainer);

        var 
    timer:Timer=new Timer(40,10);
        
    timer.addEventListener(TimerEvent.TIMERtimerEvent);
        
    timer.start();

        var 
    my_url:String my_xmlList[num].@URL;
        var 
    my_loader = new Loader();
        
    my_loader.load(new URLRequest(my_url));
        
    my_loader.contentLoaderInfo.addEventListener(Event.COMPLETEimageLoaded);

        var 
    preloader_pb:ProgressBar = new ProgressBar();
        
    preloader_pb.source my_loader.contentLoaderInfo;
        
    preloader_pb.my_loader.x;
        
    preloader_pb.stage.stageHeight-preloader_pb.height;
        
    preloader_pb.width =stage.stageWidth;
        
    my_preloaders.addChild(preloader_pb);

        
    preloader_pb.addEventListener(Event.COMPLETEdonePb);

    }
    function 
    imageLoaded(e:Event):void {
        var 
    my_image:Loader Loader(e.target.loader);
        
    my_image_slides.addChild(my_image);
        
    my_image.cacheAsBitmap=true;
        
    my_image.mask maskContainer;
    }

    function 
    donePb(e:Event):void {
        var 
    my_pb:ProgressBar ProgressBar(e.target);
        
    my_preloaders.removeChild(my_pb);

    }

    function 
    timerListener(e:TimerEvent):void {
        
    removeMaskShape();
        
    my_playback_counter++;
        if (
    my_playback_counter == my_total) {
            
    my_playback_counter =0;
        }
        
    callImages(my_playback_counter);
    }
    function 
    hidePrev():void {
        var 
    my_image:Loader=Loader(my_image_slides.getChildAt(0));
        
    my_image_slides.removeChild(my_image);
    }

    /*----Gestisco la maschera----*/

    function timerEvent(e:TimerEvent):void {

        var 
    maskShape:MaskShape = new MaskShape();
        
    maskShape.scaleX 0;
        
    maskShape.scaleY 0;

        
    maskShape.Math.random() * stage.stageWidth;
        
    maskShape.Math.random() * stage.stageHeight;

        
    maskContainer.addChild(maskShape);
        
    maskShape.alpha=0;
        
    maskShape.addEventListener(Event.ENTER_FRAMEanimateMaskShape);

    }

    function 
    animateMaskShape(e:Event):void {
        
    e.target.scaleX += 0.05;
        
    e.target.scaleY += 0.05;
        
    e.target.alpha +=0.01;
    }

    function 
    removeMaskShape():void {

        var 
    count:uint maskContainer.numChildren;
        
    //trace(count);
        
    for (var i:uint=0i<counti++) {
            
    maskContainer.removeChildAt(0);
        }
        
    //hidePrev();

    mi sapete dire dove sbaglio?

    Creazie
    Ciao

  2. #2
    Utente di HTML.it L'avatar di Ashry
    Registrato dal
    Jul 2002
    Messaggi
    586
    Come no detto ho spostato il removeMaskShape(); e funziona ^-^

    Codice PHP:
    function donePb(e:Event):void {
        var 
    my_pb:ProgressBar ProgressBar(e.target);
        
    my_preloaders.removeChild(my_pb);
        
    removeMaskShape();



Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.