Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 38
  1. #1

    HELP - script per accentramento non sempre funziona

    Ciao a tutti, sto facendo un sito in Flash (non retribuito) per un mio amico. Ho trovato uno script in rete e ho cercato di riadattarlo e personalizzarlo per le mie esigenze. Inizialmente sebrava che adasse tutto ok, ma poi, dopo che ho aggiunto anche il preload sono iniziati i malfunzionamenti...in pratica il tutto è composto da due file .swf, uno è il contenitore (contenitore.swf), mentre l'altro è il sito vero e proprio (sito.swf). Il contenitore è a tutto schermo (dimen. 100% - funzioni presenti Stage.align = ;Stage.scaleMode - Stage.addListener - etc...) e accentra automaticamente il sito con una specie di effetto tween, il sito si accentra bene, l'unica cosa che non si accentra è il suo preload...in poche parole quando contenitore.swf richiama sito.swf quest'ultimo si accentra perfettamente, ma il suo preload no. Credo che il problema sia che sito.swf non essendo ancora del tutto caricato non dichiara subito le sue dimensioni e quindi la sua posizione iniziale (cioè quella del preload) risulta decentrata...
    I codici ci sono già tutti, non occorre fare nulla di particolare, credo solo una piccola modifica al codice, cosa che, a chi più pratico di me in AS, richiederebbe poco tempo.
    A chi è disposto ed interessato a darmi una mano, fornisco ulteriori dettagli + i files demo in pvt.
    Ciao e grazie a tutti in anticipo.

  2. #2
    Beh, scritto così il problema non è molto identificabile...

    Domanda: lo script che "centra" il MovieClip viene eseguito una sola volta? O c'è un controllo continuo (tipo onEnterFrame o simili)?
    Da quello che scrivi immagino che ci sia un controllo continuo, dato che dopo il preload il clip viene centrato.

    Se è così butto lì un'ipotesi: se lo script per centrare il file "legge" altezza e larghezza del MovieClip che contiene l'swf, forse basta mettere un rettangolo vettoriale della stessa dimensione nel primo frame dell'swf caricato, posizionandolo dietro il preload, così restituisce le dimensioni corrette immediatamente, prima ancora di completare il download.

  3. #3
    Oppure, se il preload è in un clip, puoi dare tu le coordinate nello stesso frame...

  4. #4
    ...ti ho inviato il link sia per vedere (on line) che per scaricare una devo, si fa prima a vedere che a spiegare... se ti va e hai tempo (credo che ti richieda veramente pochissimmo) scaricala e dagli un'occhiata... altrimenti provo a spiegartelo nel post...
    Ciao

  5. #5
    Originariamente inviato da Paolita
    (...)
    si fa prima a vedere che a spiegare...
    (...)
    Appena posso guardo, ma tu hai provato a verificare quello che ti ho scritto?

  6. #6

    Re: HELP - script per accentramento non sempre funziona

    Originariamente inviato da Paolita
    (...)
    Il contenitore (...) accentra automaticamente il sito con una specie di effetto tween, il sito si accentra bene, l'unica cosa che non si accentra è il suo preload...in poche parole quando contenitore.swf richiama sito.swf quest'ultimo si accentra perfettamente, ma il suo preload no.
    (...)
    Ho aperto i tuoi files. A me non risulta che sia come l'hai descritto!
    C'è una funzione che centra il MovieClip con sito.swf, ma si attiva solo su onResize.
    Se non viene ridimensionata manualmente la finestra, il clip non viene centrato affatto!
    Questo comprende anche il preload.

    Puoi rendertene conto anche tu con "Simula scaricamento"; imposta lo scaricamento al valore più basso, e poi prova a ridimensionare la finestra prima che il preload abbia termine. Vedrai che si centra anche il preload.

    Questo perchè il problema NON è il preload, ma il posizionamento della funzione.
    Se vuoi che si centri tutto subito metti la funzione al di fuori dell'onResize.

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    attenzione danbat, non è necessario tirar fuori la funzione... basta richiamare la prima volta l'onResize

    supponendo una situazione simile

    var o = new Object();
    o.onResize = function(){
    //azioni
    }
    Stage.addListener(o);
    // aggiungo un primo richiamo della funzione onResize
    o.onResize();

  8. #8
    ...ho già provato tempo fa a mettere un rettangolo come hai detto tu, ma non è cambiato nulla, almeno per il preload...

    Per quanto riguarda lo script non "centra" nessun MovieClip, perché non c'è un MovieClip, l'swf esterno viene richiamato diversamente...beh mi sa che è meglio che provi a spiegarti meglio...

    ...allora, io ho due file, uno è contenitore.swf e l'altro è sito.swf. Il primo, come dice anche il nome è un semplice contenitore che contiene lo script che richiama sito.swf e crea una specie di effetto tween, accentrando automaticamente il tutto. Questo script io l'ho trovato tempo fa sul web (ora di preciso non ricordo dove) e ricordo che era previsto per un'immagine, io ho sostituito l'immagine e ho inserito un file .swf, forse sarà per questo che fa i capricci, mah, non lo so, cmq lo script in questione è il seguente:

    import mx.transitions.*;
    import mx.transitions.easing.*;
    Stage.align = "TL";
    Stage.scaleMode = "noScale";
    Stage.showMenu = false;
    var drawRectangle:Function = function (target:MovieClip, name:String, level:Number, width:Number, height:Number, color:Number) {
    target.createEmptyMovieClip(name, level);
    with (target[name]) {
    moveTo(0, 0);
    lineStyle(0, color, 0);
    beginFill(color, 100);
    lineTo(width, 0);
    lineTo(width, height);
    lineTo(0, height);
    lineTo(0, 0);
    endFill();
    }
    };
    var sfondo:MovieClip = this.createEmptyMovieClip("sfondo", 1);
    var mload:MovieClipLoader = new MovieClipLoader();
    var mlist:Object = new Object();
    mlist.onLoadInit = function(target) {
    target._x = Math.round((Stage.width-target._width)/2);
    target._y = Math.round((Stage.height-target._height)/2);
    target._alpha = 0;
    target.onEnterFrame = function() {
    if (this._alpha<100) {
    this._alpha += 3;
    } else {
    delete this.onEnterFrame;
    }
    };
    };
    mload.addListener(mlist);
    mload.loadClip("sito.swf ", sfondo);
    sfondo._lockroot = true;
    resize();
    var fluid:Object = new Object();
    fluid.onResize = function() {
    _root['resize']();
    var sy:Object = new Tween(sfondo, "_y", Regular.easeOut, sfondo._y, Math.round((Stage.height-sfondo._height)/2), 30, false);
    var sx:Object = new Tween(sfondo, "_x", Regular.easeOut, sfondo._x, Math.round((Stage.width-sfondo._width)/2), 30, false);
    };
    Stage.addListener(fluid);


    L'altro filmato, sito.swf, è il sito vero e prorio con tutti i contenuti ed il preload. Il preload in questione, cioè quello che non riesco a centrare, è in un clip, come mi hai chiesto tu, ma sinceramente non saprei come centrarlo dando le coordinate nello stesso frame...
    Il Preload è nella stessa Scena, nello stesso livello ma semplicemente in un fotogramma chiave precedente a quello in cui inizia tutta l'animazione. Sul clip del preload (con nome istanza: loading) c'è questa azione:

    onClipEvent (load){
    total = _root.getBytesTotal();
    larghezza = 100;
    }
    onClipEvent (enterFrame){

    loaded = _root.getBytesLoaded();
    percent = Math.round(loaded / total * 100);
    // Allungo la barra e la posiziono in modo fisso sull'asse X
    setProperty("barra", _xscale, (percent*larghezza)/100);
    setProperty("barra", _x, loading._x);

    text = percent + "%";

    if (loaded == total & loaded > 1024){
    _parent.gotoAndPlay(2);
    } // end if
    }


    Questo è il quadro completo di tutta la situazione. Spero di aver esposto tutto e di essermi spiegato bene. Se tu (o altri che leggeranno) hai una soluzione, gentilmente consigliami, perché io onestamente non so come fare.
    Ciao

  9. #9
    ...oh, scusa danbat, ho scritto l'ultimo mess senza aggiornare la pagina e quindi non avevo visto che tu hai aperto il mio file...ho provato a mettere la funzione che centra il MovieClip al di fuori dell'onResize, ma, a meno che io non abbia sbagliato (cosa molto probabile), non funziona...
    Per quanto riguarda il secondo consiglio
    Puoi rendertene conto anche tu con "Simula scaricamento"; imposta lo scaricamento al valore più basso, e poi prova a ridimensionare la finestra prima che il preload abbia termine. Vedrai che si centra anche il preload.
    non ho capito bene come fare...

  10. #10

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.