Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    caricare SWF da elenco XML


    Volevo chiedere come posso caricare X swf da una lista XML

    La mia esigenza è quella di caricare una serie di swf esterni in sequenza avendo le "classiche" freccie:
    < indientro | avanti >

    il caricamento, come lo scaricamento dovrebbe avere l'effetto fade, fadout quando scarica e fadein al caricamento
    Il tutto con action script 3
    Essendo io un pivello con action script in generale, questo è quanto ho fatto fino ad ora:


    codice:
    var request:URLRequest = new URLRequest("scheda.swf");
    var loader:Loader = new Loader();
    /*
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
    function completeHandler(event:Event) {trace("Caricamento completato!");}
    */
    loader.load(request);
    my_mc.addChild(loader);
    struttura XML
    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <images>
    <image>wefw1.swf</image>
    <image>pippo.swf</image>
    <image>werffq3.swf</image>
    <image>04.swf</image>
    </images>
    c'è qualche buona anima che mi da qualche dritta?

  2. #2
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    Grazie whisher per la risposta, molto interessante quella fonte.
    Nel mentre attendevo una risposta però ho spulciato la rete e ho trovato "l'inizio" di quel che dovrebbe servire a me e stavo "smanettando" appunto su quello:

    codice AS3
    codice:
    // Importo tutte le classi necessarie a gestire le transizioni.
    import fl.transitions.Tween;
    import fl.transitions.easing.*;
    import fl.transitions.TweenEvent;
    
    // Dichiaro tutte le variabili GLOBALI
    var GLOBALslideCount:int = 0;
    var GLOBALslideNum:int = 0;
    var GLOBALslideList:XMLList;
    var GLOBALslideArray:Array = new Array();
    
    // Carico il file XML
    var xmlLoader:URLLoader = new URLLoader();
    var xmlRequest:URLRequest = new URLRequest("servizi_webdesign.xml");
    xmlLoader.addEventListener(Event.COMPLETE, createList);
    xmlLoader.load(xmlRequest);
    
    // Leggo l'XML caricato e creo la lista delle diapositive
    function createList(e:Event) {
        var xml:XML = new XML(e.target.data);
        GLOBALslideList = new XMLList(xml.slide);
        GLOBALslideCount = GLOBALslideList.length();
        loadImage();
    }
    
    // Funzione che inizia il caricamento della prossima immagine
    function loadImage(){
        var imgLoader:Loader = new Loader();
        var imgRequest:URLRequest = new URLRequest(GLOBALslideList[GLOBALslideNum].imgUrl);
        imgLoader.contentLoaderInfo.addEventListener(Event.INIT, showImage);
        imgLoader.load(imgRequest)
    }
    
    
    
    
    
    // Funzione che fa comparire l'immagine sullo Stage
    function showImage(e:Event) {
        var foto:Bitmap = e.target.content;
        foto.width = stage.stageWidth;
        foto.height = stage.stageHeight;
        var showTween:Tween = new Tween(foto, 'alpha', None.easeNone, 0, 1, 1, true)
        showTween.addEventListener(TweenEvent.MOTION_FINISH, wait)
        GLOBALslideArray.push(addChild(foto))
        if (GLOBALslideArray.length>2){
            removeChild(GLOBALslideArray[0]);
            GLOBALslideArray.shift()
        }
    }
    
    // Funzione che gestisce l'attesa tra una foto e la successiva
    function wait(te:TweenEvent){
        var seconds = GLOBALslideList[GLOBALslideNum].imgTime;
        if (isNaN(seconds)||seconds<0.01){
            seconds=0.01;
        }
        removeChild(title_txt)
        title_txt.text = GLOBALslideList[GLOBALslideNum].imgTitle;
        addChild(title_txt)
        removeChild(timebar_mc)
        var waitTween:Tween = new Tween(timebar_mc, 'scaleX', None.easeNone, 0, 1, seconds, true);
        waitTween.addEventListener(TweenEvent.MOTION_FINISH, nextImage)
        addChild(timebar_mc)
    }
    
    // Funzione che incrementa il numero dell'imagine da visualizzare e richiama loadImage
    function nextImage(te:TweenEvent){
        GLOBALslideNum++;
        if(GLOBALslideNum>=GLOBALslideCount){
            GLOBALslideNum=0;
        }
        loadImage()
    }

    Il problema è che avendo dei file .SWF da caricare e non delle immagini, mi da il seguente errore in fase di compilazione:

    codice:
    TypeError: Error #1034: Assegnazione di tipo forzata non riuscita: impossibile convertire flash.display::AVM1Movie@107d34c1 in flash.display.Bitmap.
    	at servizi_webdesign_fla::MainTimeline/showImage()

    credo che il problema risieda in questa parte....credo...

    function showImage(e:Event) {
    -----------> var foto:Bitmap = e.target.content; <-----------
    foto.width = stage.stageWidth;
    foto.height = stage.stageHeight;

    ho cercato in giro ma non saprei come risolvere

  4. #4
    Non so se sono sulla giusta strada
    ho comunque modificato la var foto invece che

    var foto:Bitmap = e.target.content;

    in

    var foto:BitmapData = e.target.content;

    l'errore è cambiato e sembra + innocuo

    mha
    errore attuale:
    1067: Assegnazione forzata implicita di un valore del tipo flash.display:BitmapData a un tipo flash.displayisplayObject non correlato.

    alla riga

    var showTween:Tween = new Tween(foto, 'alpha', None.easeNone, 0, 1, 1, true)
    showTween.addEventListener(TweenEvent.MOTION_FINIS H, wait)
    GLOBALslideArray.push(addChild(foto)) <---------------------------
    if (GLOBALslideArray.length>2){
    removeChild(GLOBALslideArray[0]);
    GLOBALslideArray.shift()
    }
    }

  5. #5
    Hai provato così:

    var foto:BitmapData = e.target.content as Bitmap;

  6. #6
    Ciao kaneda

    Ho provato e il risultato è questo:
    1067: Assegnazione forzata implicita di un valore del tipo flash.display:Bitmap a un tipo flash.display:BitmapData non correlato.

    1067: Assegnazione forzata implicita di un valore del tipo flash.display:BitmapData a un tipo flash.displayisplayObject non correlato.

    codice:
    function showImage(e:Event) {
    	var foto:BitmapData = e.target.content as Bitmap;
    	/*
        foto.width = stage.stageWidth;
        foto.height = stage.stageHeight;
    	*/
    	  var showTween:Tween = new Tween(foto, 'alpha', None.easeNone, 0, 1, 1, true)
        showTween.addEventListener(TweenEvent.MOTION_FINISH, wait)
        GLOBALslideArray.push(addChild(foto))
        if (GLOBALslideArray.length>2){
            removeChild(GLOBALslideArray[0]);
            GLOBALslideArray.shift()
        }
    }

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Stai caricando dei filmati e non delle bitmap. Inoltre dal primo errore che vedo, stai caricando dei filmati in vecchia versione che quindi vengono restituiti come AVM1Movie, perciò non puoi mettere una classe a caso nella riga, devi mettere quella che cerchi di caricare:
    Codice PHP:
    var foto:AVM1Movie e.target.content
    Il problema nel tuo caso è che siccome stai usando dei filmati, non puoi fare come se fossero delle foto per fare lo slide, devi aspettare che il filmato venga visualizzato fino in fondo, quindi dovrai controllare l'esecuzione del filmato esterno alla fine del quale potrai caricare il nuovo filmato. Il problema è che praticamente non c'è possibilità di interazione tra un filmato vecchio e uno nuovo, se non limitatamente ad alcune cose, quindi bisognerebbe vedere un po' se sia possibile verificare lo scorrimento del filmato esterno dal codice AS3 a tua disposizione.

  8. #8
    And
    Grazie preciso e impeccabile come sempre, ho capito, io comunque dovrei caricare i vari swf esterni con le frecciette avanti e indietro...come posso fare questa parte?

    l'esempio da me riportato compie uno slide automatico

    cmq mentre aspettavo delucidazioni ho applicato questo codice

    codice:
    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_labels_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_label_slides:Sprite = new Sprite();
    var my_preloader:TextField;
    
    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.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);
    
    		var my_label:TextField = new TextField();
    		my_label.text=my_images[i].@TITLE;
    		my_label.autoSize=TextFieldAutoSize.LEFT;
    		my_labels_array.push(my_label);
    
    	}
    
    	my_preloader = new TextField();
    	my_preloader.text="Loading";
    	my_preloader.autoSize=TextFieldAutoSize.CENTER;
    	my_preloader.x = (stage.stageWidth - my_preloader.width)/2;
    	my_preloader.y = (stage.stageHeight - my_preloader.height)/2;
    	addChild(my_preloader);
    
    }
    
    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 {
    
    	removeChild(my_preloader);
    	my_preloader=null;
    
    	addChild(my_slideshow);
    	my_slideshow.addChild(my_image_slides);
    	my_slideshow.addChild(my_label_slides);
    
    	nextImage();
    
    	my_timer=new Timer(my_speed*1000);
    	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)/2;
    	my_image.y = (stage.stageHeight - my_image.height)/2;
    	my_tweens_array[0]=new Tween(my_image,"alpha",Strong.easeOut,0,1,1,true);
    
    	var my_label:TextField=TextField(my_labels_array[my_playback_counter]);
    	my_label_slides.addChild(my_label);
    	my_label.x=my_image.x;
    	my_label.y=my_image.y+my_image.height;
    	my_tweens_array[1]=new Tween(my_label,"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);
    
    	var my_label:TextField=TextField(my_label_slides.getChildAt(0));
    	my_tweens_array[2]=new Tween(my_label,"alpha",Strong.easeOut,1,0,1,true);
    
    }
    
    function onFadeOut(e:TweenEvent):void {
    	my_image_slides.removeChildAt(0);
    	my_label_slides.removeChildAt(0);
    }
    Il quale carica sia SWF che immagini da un file XML strutturato come segue:

    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <slideshow>
    
    <slide>
    <imgUrl>servizi/01.swf</imgUrl>
    <imgTime>1</imgTime>
    <imgTitle>cooperativa Coop Case Mantova</imgTitle>
    </slide>
    
    <slide>
    <imgUrl>servizi/02.swf</imgUrl>
    <imgTime>1</imgTime>
    <imgTitle>Lo Scompenso Cardiaco</imgTitle>
    </slide>
    
    <slide>
    <imgUrl>servizi/03.swf</imgUrl>
    <imgTime>1</imgTime>
    <imgTitle>NeoLactoflorene</imgTitle>
    </slide>
    
    </slideshow>
    ma anche questo è "temporizzato" come posso aggiungere le freccette avanti e indietro?


  9. #9

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.