Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    3

    Un ciclo for che non funziona

    Buongiorno ragazzi,
    sono nuovo di qui! Sono un giovane programmatore PHP che ha dovuto avvicinarsi, in maniera un po' avventata forse, ad ActionScript.

    Ho realizzato una galleria fotografica che viene gestita in PHP, i cui dati vengono passati ( non sto a dirvi come ) ad ActionScript che ha il compito di renderli visibili.

    C'è un problema che non riesco a risolvere e, siccome, vorrei riuscirci da solo, prima di svelarvi di cosa si tratta ( temo che sarà necessario ), voglio chiedervi un aiuto su uno script facile facile.

    Con questo script dovrei rendere nullo il valore di tutte le variabili che vanno da foto0 a fototot dove tot è una variabile che indica evidentemente il totale delle foto ed il cui valore è già assegnato.

    Questo script è corretto?

    on (press) {
    for (this.a=0; this.a==_root.tot; this.a++) { this["foto"+this.a]=NULL;
    }

    gotoSceneAndPlay("Scene_4", 1);
    }

    Dopo aver lanciato lo script, controllo attraverso un campo di testo dinamico se la variabile foto2 ( è una a caso ) ha perso il suo valore, ma non è così!

    Cosa posso fare?
    Grazie in anticipo a tutti voi!

  2. #2
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Ciao

    Scusa se commento anche se non sono molto ferrato con AS2 e quello che scrivo si basa sulle mie conoscenze in AS3 ma quel ciclo for mi sembra strano:

    A parte quel gotoSceneAndPlay che non ho mai visto prima e nell'editor di Flash non risulta essere una parola chiave di ActionScript, nel ciclo for hai messo un operatore di confronto (==) invece di un valore fisso che determina il numero di interazioni del ciclo for.

    Ad ogni modo, ho provato a riprodurre la situazione che hai descritto creando 3 variabili con un determinato valore nella timeline principale di Flash e le ho inserite in un Array.
    Ho creato un pulsante che attiva un ciclo for e azzera il contenuto delle variabili e lo setta su 'undefined' (puoi fare anche NULL, è uguale):

    Codice sul primo frame della timeline principale:

    Codice PHP:
    variabile1 "Pippo"
    variabile2 "Paperino"
    variabile3 "Pluto"

    var array:Array = new Array(variabile1,variabile2,variabile3);

    trace(array); // Pippo,Paperino,Pluto 
    Codice nel pulsante:
    Codice PHP:
    on (press) {
        for (var 
    0_root.array.lengtha++)
        {
            
    _root.array[a] = undefined;
        }
        
    trace(_root.array); // undefined,undefined,undefined

    Sembra funzionare e nella prova filmato ricevo come output i valori contenuti nell Array.
    Dopo il click sul pulsante questi valori risultano indefiniti.

    Spero ti sia utile per capire l'errore.

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    3
    Ciao e grazie tante per la risposta!
    Dimenticavo di dire che sto utilizzando il software Swishmax - forse ho sbagliato sezione - e a dirti la verità non conosco la versione di AS che utilizzo

    Ad ogni modo la tua soluzione è sicuramente valida, ma rimane comunque un problema. Il numero degli elementi di questa ipotetica array è variabile. Tu ha inizializzato 3 variabili e ne hai fatto un array, ma nel mio caso il numero degli elementi varia in base al numero di foto contenute nella cartella caricata. Per capirci avrei comunque bisogno di un ciclo simile a quello che avevo proposto che inizializzi l'array, sbaglio?

    Comunque spiego il problema reale, che è meglio ( anche se sarebbe bene risolvere anche questo del ciclo for, perchè potrebbe essere un tentativo di risoluzione per il vero problema )

    In una scena c'è questo script:

    onSelfEvent (load) {
    loadVariables("gestoregalleria/cartelleflash.txt");
    _root.fold = NULL;
    }


    Viene caricato il file cartelleflash.txt che al suo interno ha questi dati:

    &cartella0=nome della prima cartella&cartella1=nome della seconda cartella... e così via

    Attraverso l'applicazione che gestisce la galleria, PHP modifica questo file di testo e vi salva appunto le variabili relative ai nomi delle cartelle.

    Nella medesima scena ho diversi campi di testo variabili cartella0, cartella1, cartella2
    al cui interno compaiono, se esistono, i nomi delle cartelle che l'amministratore crea.

    Quando l'utente clicca su uno di questi campi testo, per esempio quello della prima cartella si attiva questo script:

    on (press) {
    if (cartella0!=NULL) {
    gotoSceneAndPlay("Scene_5", 1);
    _root.fold = _root.cartella0;
    }
    else{}
    }

    _root.fold che prima era NULL assume il valore della cartella che l'utente ha scelto.

    Nella Scene_5 c'è questo script

    onSelfEvent (load) {
    loadVariables("gestoregalleria/" + _root.fold + "/fotoflash.txt",'GET');
    loadVariables("gestoregalleria/" + _root.fold + "/totale.txt",'GET');
    _root.prim=0;
    _root.ext="jpg";
    nome="";
    }

    Vengono caricati fotoflash.txt e totale.txt che contengono uno i nomi variabili simili a quelle che erano in cartelleflash ma di questo tipo:

    &foto0=nome della prima foto&foto1=nome... ecc ecc

    e totale.txt che contiene la variabile tot, ossia il numero totale delle foto.

    Questo è poi quello che succede cliccando sulla freccetta avanti ( ci sono due tasti per andare avanti e indietro nel vedere le foto )

    on (release) {
    _root.prim-=1;
    if (_root.prim>0) {
    _root.perc="gestoregalleria/" + _root.fold + "/" + _root.prim.toString() + "." + _root.ext;
    numero=prim - 1;
    nome=this["foto"+numero];
    tellTarget ("viewer") {
    loadMovie( _root.perc);
    }
    }
    else {
    _root.prim=_root.tot;
    _root.perc="gestoregalleria/" + _root.fold + "/" + _root.prim.toString() + "." + _root.ext;
    numero=prim - 1;
    nome=this["foto"+numero];
    tellTarget ("viewer") {
    loadMovie( _root.perc);
    }
    }
    }

    E uno script simile cliccando indietro, non credo sia particolarmente importante...

    Dopo tanti script, qual è il problema?

    Tutto funziona bene, ma una cartella dà un maledettissimo problema: tornando indietro dalla Scene_5 alla scena dove si visualizza la lista delle cartelle e aprendone una qualsiasi, le foto non vengono caricate più ma prendono i nomi di quella cartella maledettissima aperta in precedenza!

    Ho pensato a uno script che annulli i valori assegnati a tutte le varie foto0, foto1, foto2 così che vengano ricaricati!

    Ho cercato anche di capire che problema ha questa cartella, almeno in cosa differisce dalle altre e la differenza principale è che ci sono più foto rispetto alle altre cartelle, può comportare problemi questa differenza?

    La fregatura è che colui a cui ho realizzato il sito è molto geloso delle sue foto e mi ha precluso ogni accesso sia all'applicazione che gestisce la galleria, sia al pannello di controllo Aruba...in sostanza ogni modifica è una mail a lui, che poi deve caricare il file...
    lasciamo perdere...

    Qualche soluzione? Scusate se sono stato così prolisso...anzi spero di essere stato chiaro abbastanza!

    Grazie tantissime del vostro aiuto

  4. #4
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Ciao

    Mi dispiace ma non conosco il linguaggio di programmazione di SwishMax che per quel che ne sò utilizza un codice suo (SWiSHscript) che non può essere sviluppato in Flash con AS2 o AS3.

    Ti consiglierei pertanto di chiedere nel forum ufficiale di SwishMax dove presumo troverai maggiori informazioni su come risolvere.


    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    3
    Grazie ancora dell'attenzione!

    Finora ho seguito guide e utilizzato script relativi ad AS quindi credo che il funzionamento e la sintassi di un ciclo for siano gli stessi, indipendentemente da swishmax.

    In AS non c'è modo di creare un array il cui numero di elementi sia variabile o realizzare un ciclo for con un numero variabile di ripetizioni?

    Grazie

  6. #6
    Utente di HTML.it L'avatar di Sleter
    Registrato dal
    Aug 2005
    Messaggi
    465
    Finora ho seguito guide e utilizzato script relativi ad AS quindi credo che il funzionamento e la sintassi di un ciclo for siano gli stessi, indipendentemente da swishmax.
    Ci sono differenze sostanziali di funzionamento e sintassi tra AS2 e AS3 se poi gli aggiungiamo anche SwishScript che come è evidente utilizza classi e metodi personalizzati non vedo come si possa credere che studiando uno dei 2 ActionScript a caso si possa capire come risolvere il problema in un codice per SwishMax.

    Prova a scrivere in un file AS2 o AS3: gotoSceneAndPlay e vedi cosa succede.

    In AS non c'è modo di creare un array il cui numero di elementi sia variabile o realizzare un ciclo for con un numero variabile di ripetizioni?
    Un Array può essere riempito in runtime e gestito in diversi modi prelevandone gli elementi da diverse fonti esterne.

    Il ciclo for che ti ho proposto sopra utilizza la proprietà 'length' riferita alla lunghezza dell'Array e pertanto, se il contenuto dell'Array è variabile lo è anche il numero di interazioni che esegue il ciclo.

    ciao

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.