Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    18

    passaggio variabili tra php e flash (AS3)

    Salve a tutti.
    premetto che sono alle prime armi con flash, in particolare con AS3 e mi sono trovata davanti ad un problema forse banale.
    Ho fatto delle ricerche online e consultato dei libri di AS3..ma forse non ho capito se è possibile passare delle variabili (per es GET o POST) da php a flash, senza l'utilizzo di file esterni come txt.
    Il procedimento inverso funziona perfettamente usando

    request.data = "nome=mionome&id=1";
    flash.net.navigateToURL(request, "_self")

    dopo aver definito

    var request:URLRequest = newURLRequest("http://miodominio.com");
    request.method = "GET";

    nella guida in linea di flash ho trovato il seguente esempio

    var req:URLRequest = new URLRequest ("miodominio.com/vars.txt");

    var variables:URLLoader = new URLLoader();
    variables.dataFormat = URLLoaderDataFormat.VARIABLES;
    variables.addEventListener(Event.COMPLETE, completeHandler);

    try
    {
    variables.load( req );
    }
    catch (error:Error)
    {
    trace("Unable to load URL: " + error);
    }


    function completeHandler(event:Event):void
    {
    var loader:URLLoader = URLLoader(event.target);
    var vars:URLVariables = new URLVariables(loader.data);
    }

    ma come vedete si fa sempre riverimento ad un file di testo esterno che flash legge.
    Per caso sapete se c'è un metodo "diretto" per far in modo che flash all'aggiornamento della pagina catturi la variabile get o post passata per esempio ad un click di un bottone?

    grazie in anticipo.

    medusa

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    il metodo corretto è quello che stai utilizzando e nel request indichi un file php invece di quello di testo, ma chiaramente devi fare in modo che il file php restituisca un output come quello del txt

    ad esempio se in php fai

    Codice PHP:
    <?php
    echo "test=ciao";
    ?>
    in flash otterrai la variabile "ciao" in questo modo

    Codice PHP:
    var loader:URLLoader = new URLLoader(new URLRequest("test.php"));
    loader.addEventListener(Event.COMPLETEcompleteHandler);
    function 
    completeHandler(event:Event) {
        try {
            var 
    variables:URLVariables = new URLVariables(event.target.data);
            
    trace(variables.test); // output: ciao
        
    } catch (e) {
            
    trace(e);
        }


  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    18
    grazie mille per la risposta...ho capito...proverò e vi farò sapere intanto ho anche trovato questa doc che mi sembra utile. La linko se può essere d'aiuto a qualcuno.
    http://blogs.adobe.com/pdehaan/2006/...actionscr.html

    ancora grazie!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    18
    sono di nuovo qui, purtroppo non ho risolto il problema.
    ho capito il procedimento che mi hai suggerito and80, però io nel file .php non esplicito mai la variabile come echo "nomevar = valorevar".
    Mi chiedevo infatti se vi fosse un metodo per recuperare su flash questa variabile avendo scritto nel codice php ad esempio

    <?php if ( isSet($_GET['nome'] )) echo = $nome ; ?>
    dove $nome= $_GET['nome']
    o addirittura
    <?php if ( isSet($_GET['nome'] )) echo "nome=" . $_GET['nome']; ?>

    inoltre, visto che ci sono vorrei porvi un altro quesito (in caso apro un nuovo thread se vado contro le regole del forum):

    Ho un menu costruito così e vorrei passare stavolta le var GET da flash a php. Finchè il tutto era gestito con 1 solo bottone NON in modo dinamico tutto andava liscio. Ma se vado a farlo in modo dinamico non funziona proprio un bel niente.

    var menu:Array = new Array();
    menu = ["home" , "servizi" , "folio" , "contatti"];
    trace(menu.length)
    trace (menu)

    for ( var i:int = 0; i < (menu.length) - 1 ; i++)
    {
    menu[i].mouseChildren=false;
    menu[i].buttonMode=true;
    menu[i].addEventListener(MouseEvent.MOUSE_OVER, giu);
    menu[i].addEventListener(MouseEvent.CLICK, go);
    menu[i].addEventListener(MouseEvent.MOUSE_OUT, normal);


    function giu (evt:MouseEvent):void
    {
    menu[i].gotoAndStop(2);
    }

    function go (evt:MouseEvent):void
    {
    menu[i].gotoAndStop(2);

    request.data = "nome=" + menu[i] + "&id=" + i;
    flash.net.navigateToURL(request, "_self");
    }

    function normal (evt:MouseEvent):void
    {
    menu[i].gotoAndStop(1);
    }

    }

    Vorrei sapere se è un procedimento corretto e soprattutto come eliminare il seguente errore che mi compare in output: "ReferenceError: Error #1056: Impossibile creare la proprietà mouseChildren su String."
    Ho già controlalto le publish settings ed è già spuntata la casellina "Automatically declare stage instances"; in piu' ho provato a creare un file .as con il package ma probabilmente essendo poco pratica avrò sbagliato a scriverlo.

    Come al solito grazie in anticipo per la vostra disponibilità.

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da ^AciD.m+
    sono di nuovo qui, purtroppo non ho risolto il problema.
    ho capito il procedimento che mi hai suggerito and80, però io nel file .php non esplicito mai la variabile come echo "nomevar = valorevar".
    Mi chiedevo infatti se vi fosse un metodo per recuperare su flash questa variabile avendo scritto nel codice php ad esempio

    <?php if ( isSet($_GET['nome'] )) echo = $nome ; ?>
    dove $nome= $_GET['nome']
    o addirittura
    <?php if ( isSet($_GET['nome'] )) echo "nome=" . $_GET['nome']; ?>
    il secondo caso è quello corretto, quello che ho formattato in grassetto nel tuo post, in questo modo in flash recuperi la variabile "nome"

    Originariamente inviato da ^AciD.m+
    Ho un menu costruito così e vorrei passare stavolta le var GET da flash a php. Finchè il tutto era gestito con 1 solo bottone NON in modo dinamico tutto andava liscio. Ma se vado a farlo in modo dinamico non funziona proprio un bel niente.
    nel tuo codice metti in un array delle stringhe, mentre dovresti mettere i nomi dei movieclip che usi come pulsanti

    Codice PHP:
    var menu:Array = [homeservizifoliocontatti]; 
    il resto del codice sembra ok

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    18
    grazie tantissimo and80 per la risposta...è vero quelle inserite sono stringhe, ma togliendo le virgolette succede una cosa strana.
    I bottoni hanno tutti nomi diversi di istanze(home, servizi, folio, contatti) dello stesso MC che in libreria si chiama "Symbol 1". In questo modo quando faccio il trace dell'array l'output mi restituisce

    [object Symbol1_1],[object Symbol1_1],[object Symbol1_1],[object Symbol1_1]

    ed il filmato si comporta in modo strano..posto il link della prova. Ovviamente il caricamento del contenuto php dinamico nella pagina genera errore al click dei pulsanti perchè non trova, giustamente, file che si chiamino "dinamic[object Symbol1_1].php"

    http://firwardstudio.com/provaGet/home.php


  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    quello non sarebbe un problema, la proprietà name è di tipo String perciò puoi usare quella

    request.data = "nome=" + menu[i].name + "&id=" + i;

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ah poi ho notato che nelle funzioni che associ ai listener MOUSE_OVER ecc... inserisci menu[i] ma non va bene, meglio che usi il target, altrimenti otterrai i listener sempre e solo sull'ultimo oggetto, come accade ora
    questo il codice corretto:

    Codice PHP:
    var menu:Array = [homeservizifoliocontatti];
    for ( var 
    i:uint=0i<menu.lengthi++) {
        
    menu[i].mouseChildren=false;
        
    menu[i].buttonMode=true;
        
    menu[i].addEventListener(MouseEvent.MOUSE_OVERgiu);
        
    menu[i].addEventListener(MouseEvent.CLICKgo);
        
    menu[i].addEventListener(MouseEvent.MOUSE_OUTnormal);
    }
    function 
    giu (evt:MouseEvent):void {
        
    evt.target.gotoAndStop(2);
    }
    function 
    go (evt:MouseEvent):void {
        
    evt.target.gotoAndStop(2);
        
    request.data "nome=" evt.target.name "&id=" i;
        
    flash.net.navigateToURL(request"_self");
    }
    function 
    normal (evt:MouseEvent):void {
        
    evt.target.gotoAndStop(1);


  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    18
    Originariamente inviato da and80
    quello non sarebbe un problema, la proprietà name è di tipo String perciò puoi usare quella

    request.data = "nome=" + menu[i].name + "&id=" + i;
    E' vero, in questo modo riesco a recuperare il nome d'istanza , però come vedi dal link...i 4 bottoni si comportano in modo strano. Portano tutti al link dei contatti con id=3 e si illumina di rosso solo il 4 sul mouse over degli altri

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da ^AciD.m+
    E' vero, in questo modo riesco a recuperare il nome d'istanza , però come vedi dal link...i 4 bottoni si comportano in modo strano. Portano tutti al link dei contatti con id=3 e si illumina di rosso solo il 4 sul mouse over degli altri
    leggi il mio ultimo post, ho corretto il tuo codice e dovrebbe funzionare correttamente

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.