• User

    [AS3] Importare un swf in un fla

    Ciao ragazzi! apro questo thread per chiedervi aiuto (dopo 3 giorni di ricerche continue).

    Vi spiego: Ho bisogno di importare un SWF esterno (una galleria slideshow) in un FLA.Ho usato questo codice:

    [PHP]// Creo un oggetto URLRequest con parametro del file esterno da caricare
    var request:URLRequest = new URLRequest("slide.swf");
    // Creo un nuovo oggetto della classe Loader
    var loader:Loader = new Loader();
    // Aggancio un listener che verifica il fine caricamente è richiama una funzione
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
    // Inizializzo la funzione completeHandler, che verrà richiamata quando il contenuto esterno è caricato completamente
    function completeHandler(event:Event) {
    trace("Caricamento completato!");
    }
    // Richiamo il metodo load, che decreta l'avvio del caricamento esterno
    loader.load(request);
    // Aggiungo l'oggetto Loader al clip my_mc attraverso il metodo addChild()
    my_mc.addChild(loader);
    [/PHP]

    Il risultato è: Si! l'SWF viene importato ma in alto a sinistra della pagina! che comando devo aggiungere per posizionare l'swf?

    Vi ringrazio anticipatamente.Spero in un vostro aiuto perché davvero sono esasperato.Senza ciò non posso completare il sito.A prescindere da ogni cosa, è un comando fondamentale per me poiché mi servirebbe davvero in futuro per molte altre cose.

    Ciao ragazzi!

    Ps: ho usato il comando loader.x = 100;

    [PHP]// Creo un oggetto URLRequest con parametro del file esterno da caricare
    var request:URLRequest = new URLRequest("slide.swf");
    // Creo un nuovo oggetto della classe Loader
    var loader:Loader = new Loader();
    // Aggancio un listener che verifica il fine caricamente è richiama una funzione
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
    // Inizializzo la funzione completeHandler, che verrà richiamata quando il contenuto esterno è caricato completamente
    function completeHandler(event:Event) {
    trace("Caricamento completato!");
    }
    // Richiamo il metodo load, che decreta l'avvio del caricamento esterno
    loader.load(request);
    loader.x = 100;
    loader.y = 100;
    // Aggiungo l'oggetto Loader al clip my_mc attraverso il metodo addChild()
    addChild(loader);[/PHP]

    ma nulla.Non se move!

    E' davvero importante per me 😞 se riusciste ad aiutarmi ve ne sarei molto grato.Se vi dovessero servire vi mando il link dei due file tramite PM

    Grazie ancora


  • User

    Il codice è corretto e l'oggetto Loader viene aggiunto allo stage alle coordinate x e y = 100


  • User

    Si ma non si muove e non capisco il perchè.Non vorrei che il prblema sia il fatto che la galleria (swf) sia stata creata con un programma che crea gallerie...spero non sia dovuto a ciò perchè è carica come galleria e non saprei replicarla ...avevo cercato un programma che oltre a farmi esportare l'swf in swf mi creasse il fla. con il codice ma nulla :(...

    non so che fare.


  • Super User

    Si è molto probabile che dipenda dalla galleria creata con un altro programma, di quale programma si tratta è un programma free o a pagamento?


  • User

    Si chiama Slideroll Gallery AV e ho la versione free (l'avevo scaricata er provare se funzionava l'importazione e poi l'avrei comprato nel caso...).

    Tu hai qualcosa da consigliarmi?

    Grazoe per avermi risposto


  • Super User

    Si dipende proprio dal tipo di swf ottenuto, non so forse genera un codice interno che lo forza alle coordinate 00 e non c'è modo di spostarlo, almeno io non ci sono riuscito, per quanto riguarda altri programmi ne esistono diversi ma sinceramente non saprei quale consigliarti perchè non ne uso, perchè invece di crearli con un programma non usi una di quelle gallerie già pronte del quale il web è ricco, ti scarichi il sorgente lo personalizzi, spesso basta mettere le tue immagini in una cartella e rinominarle o modificare il file xml mettendo in nomi delle tue foto ed è fatta.


  • User

    Grazie ancora per le risposte.

    Si ho cercato ma niente.L'unica che ho trovato e che ho usato è quella che prende le immagini da una cartella tramite XML ma non è una galleria a pulsanti come quella che hai visto (penso) ma una galleria che ha un "gancio" in basso...che trasportandolo verso destra ti mostra le altre foto.Ma il problema di questa galleria è che quando arrivi a 100 foto comandare quel gancio XD risulta impossibile perchè al minimo spostamento già si spostano 5 foto XD.A parte ciò avevo voglia di usare una bella galleria come quella che hai visto...magari con le finestrelle che mostrano la miniatura in basso...ma non le trovo...forse sono ritardato XD (può essere dato che ormai sto perdendo la testa stando dietro all'AS3 che risulta impossibile anche per creare un pulsante!! in AS2 bastano 3 righe di codice...li se ne usi 30 non gli bastano XD)

    Poi sai cos'è? io non sono uno che si adatta a quello che trova , ma preferisce crearsele da se piuttosto che prenderle già pronte...ma a dire trovare un tutorial per creare gallerie con animazioni già un pò più complesse e carine del solito clicca e cambia fotogramma.


  • Super User

    Guarda questa per esempio.
    http://www.flashmo.com/preview/flashmo_195_fisheye_gallery
    Tanto anche quelle fatte col programma mica le fai tu, poi lasciati dire una cosa stai parlando di 100 foto, non puoi usare quella galleria che ingloba le foto nel swf diventerebbe pesantissimo devi per forza usare una galleria dinamica, esiste un componente terze parti per flash si chiama SlideShowPro, crea delle discrete gallerie con le thumbs, funziona tramite xml, ho provato la demo niente male, per quanto riguarda as3, all'inizio spaventa ma se superi il primo momento di panico se provieni da as2 ti assicuro per molte cose le righe di codice da scrivere sono meno che in as2 e il codice gira meglio e più veloce, anche perchè non puoi fare sbagli come in as2 che magari non interrompono il fimato ma lo rallentano rendendolo più pesante.


  • User

    ... ma dai 30 righe di codice per un pulsante in AS3 ?

    pulsante.addEventListener(MouseEvent.CLICK, faiQualcosa);
    function faiQualcosa(evento:MouseEvent):void
    {
    trace("ciao");
    }


  • Super User

    Ciao Sleter, come stai, appena riesco ad alzarmi e stare seduto vado al mio pc dove ho skipe e ti chiamo.


  • User

    Ahahahah nono va beh 30 no haha ho esagerato però risulta leggermente più complesso...com'è che nell'as2 a sinistra della finestra azioni ha tutte le funzioni geneali a portata di mano...nell'as3 ci sono ma sono confusionarie...almeno mi pare XD

    Cmq Nathan sai che non è niente male? posso usare queste effettivamente...che penso verranno incorporate meglio e correttamente.Se si aggiungono le foto tramite XML è anche meglio certamente! così carico tutto sul server e non su un swf.

    Si in XML è meglio ma le foto le prende comunque anche se l'sfw è importato? sapevo di no..

    Grazie comunque...mi hai fatto conoscere un "portale" come flashmo niente male


  • User

    ... oh Nhatan ma che ti è successo ? :surprised:

    Avevo notato la tua assenza dal forum ma ti credevo in vacanza !

    Comunque sono contento di rileggerti e ti auguro una veloce ripresa di attività e studio in privato e in pubblico.

    a presto !

    Sleter


  • Super User

    Mi sono fratturato una vertebra...una bella caduta di schiena da circa 4mt. Ma mi è andata anche bene, ho rischiato davvero tanto.


  • User

    (porca miseria 4mt O.O lo credo cavolo! ti auguro una pronta guarigione anche io :D)


  • User

    Ciao ragazzi, intanto grazie anticipatamente, apro questo thread poiché cercando nel forum non ho trovato soluzione...o meglio, ho provato qualcosa trovata ma non mi ha aiutato..

    Questo è il codice:

    [PHP]function onMouseClick(e:MouseEvent):void {
    switch(e.target.name) {
    case btn_home.name = "Home" :
    btn_home.addEventListener(MouseEvent.CLICK, onMouseClick);
    // quando fai click sul pulsante btn_home
    gotoAndPlay(1);
    break;
    case btn_obiettivi.name = "Obiettivi" :
    btn_obiettivi.addEventListener(MouseEvent.CLICK, onMouseClick);
    // quando fai click sul pulsante btn_obiettivi
    gotoAndPlay(2);
    break;
    case btn_prodotti.name = "Prodotti" :
    btn_prodotti.addEventListener(MouseEvent.CLICK, onMouseClick);
    // quando fai click sul pulsante btn_obiettivi
    gotoAndPlay(3);
    break;
    case btn_info.name = "Info" :
    btn_info.addEventListener(MouseEvent.CLICK, onMouseClick);
    // quando fai click sul pulsante btn_obiettivi
    gotoAndPlay(4);
    break;
    case btn_collabora.name = "Collabora" :
    btn_collabora.addEventListener(MouseEvent.CLICK, onMouseClick);
    // quando fai click sul pulsante btn_obiettivi
    gotoAndPlay(5);
    break;
    case btn_contatti.name = "Contatti" :
    btn_contatti.addEventListener(MouseEvent.CLICK, onMouseClick);
    // quando fai click sul pulsante btn_obiettivi
    gotoAndPlay(6);
    break;

              }   
    

    }[/PHP]

    Ovviamente ho nominato le istanze dei bottoni sopracitati ma niente...i pulsanti non funzionano! e rimango piantato sul primo frame 😕

    ho usato questo codice al posto di questo:

    [PHP]//Colleghiamo gli eventi all?istanza pulsante
    btn_home.addEventListener(MouseEvent.CLICK, onMouseClick);
    //Intercettare il click sul pulsante
    function onMouseClick(event:MouseEvent):void {
    gotoAndPlay(1);
    }

    //Colleghiamo gli eventi all?istanza pulsante
    btn_obiettivi.addEventListener(MouseEvent.CLICK, onMouseClick2);
    //Intercettare il click sul pulsante
    function onMouseClick2(event:MouseEvent):void {
    gotoAndPlay(2);
    }

    //Colleghiamo gli eventi all?istanza pulsante
    btn_prodotti.addEventListener(MouseEvent.CLICK, onMouseClick3);
    //Intercettare il click sul pulsante
    function onMouseClick3(event:MouseEvent):void {
    gotoAndPlay(3);
    }

    //Colleghiamo gli eventi all?istanza pulsante
    btn_info.addEventListener(MouseEvent.CLICK, onMouseClick4);
    //Intercettare il click sul pulsante
    function onMouseClick4(event:MouseEvent):void {
    gotoAndPlay(4);
    }

    //Colleghiamo gli eventi all?istanza pulsante
    btn_collabora.addEventListener(MouseEvent.CLICK, onMouseClick5);
    //Intercettare il click sul pulsante
    function onMouseClick5(event:MouseEvent):void {
    gotoAndPlay(5);
    }

    //Colleghiamo gli eventi all?istanza pulsante
    btn_contatti.addEventListener(MouseEvent.CLICK, onMouseClick6);
    //Intercettare il click sul pulsante
    function onMouseClick6(event:MouseEvent):void {
    gotoAndPlay(6);
    } [/PHP]

    Che funziona a metà cioè i comandi rispondono ma solo se clicco da sinistra a destra le voci...cioè le posizioni dei pulsanti sono: Home , obiettivi , prodotti , info , collabora e contatti? ecco se clicc su Obiettivi mentre sono su Home BENE! , se clicc o su prodotti mentre sono su obiettivi BENE! se clicc o su contatti mentre sono su Info BENE!

    Ma

    Se clicco su Home mentre sono su contatti (quindi andando dal Frame 6 al Frame 1) non va

    Non capisco perché, cioè non è un codice così complesso..

    Sapreste aiutarmi in uno dei due casi? Grazie ragazzi


  • Super User

    Ciao depeppe2000 ben tornato, questo è un nuovo argomento che non c'entra niente con il primo,ti prego di aprire una nuova discussione, gli argomenti di un forum devono servire a tutti non solo a chi apre la discussione, ma se un utente scrive nel motore di ricerca parole chiave tipo "codice per menù" difficilmente arriverà a questa discusione.


  • User

    oddiooo non me ne sono accorto...vado subito

    scusate