Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080

    Problema sfondo 100% e elementi "fissi"

    Sto cercando di modificare questo codice

    http://www.v2online.it/articoli/liquid_layout.html

    Il problema è che lo sfondo è si elastico ma quando si espande non mantiene le proporzioni. Ho quiendi sostituito il Stage.scaleMode = "noScale"; on NoBorder con risultato che lo sfondo va bene, ma il quadrato al centro e le frecce di destra si scasinano tutte.

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Se vuoi tenere le proporzioni dello sfondo fisse devi calcolare la proporzione in base alle dimensioni dello stage, non lo puoi fare in maniera automatica.

    Ponendo di avere un clip "loader" che contiene un altro clip "canvas" che carica/contiene il file esterno dello sfondo, dovrai richiamare questa codice ogni volta che effettui il resize:

    Codice PHP:
    if ((Stage.width Stage.height) > loader._width/loader._height) {
        
    loader._height Stage.width / (loader._width/loader._height);
        
    loader._width Stage.width;
    } else {
        
    loader._width Stage.height / (loader._height/loader._width);
        
    loader._height Stage.height;
    }
    loader.canvas._x loader.canvas._width * -0.5;
    loader.canvas._y loader.canvas._height * -0.5;
    loader._x Stage.width 0.5;
    loader._y Stage.height 0.5

  3. #3
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Grazie mille! Però da qualche parte ancora sbaglio agrrrrrr...
    In pratica dal codice postato prima ho tolto le cose relative allo sfondo e ho messo cioò che mi hai detto.
    Nel primo frame ho messo il mio sfondo > f9 clip filmato nominato sfondo, aperto il clip f9 clip filmato chiamato canvas. Purtroppo però il mio clip ancoranon si adatta allo schermo.

    L'errore che sicuramente dovrà sistemare sarà in caso di resize della finestra (ma a quello ci penserò poi)

    codice:
    Stage.scaleMode = "noScale";
    Stage.align = "TL";
    Stage.showMenu = false;
    
    if ((Stage.width / Stage.height) > sfondo._width/sfondo._height) {
        sfondo._height = Stage.width / (sfondo._width/sfondo._height);
        sfondo._width = Stage.width;
    } else {
        sfondo._width = Stage.height / (sfondo._height/sfondo._width);
        sfondo._height = Stage.height;
    }
    sfondo.canvas._x = sfondo.canvas._width * -0.5;
    sfondo.canvas._y = sfondo.canvas._height * -0.5;
    sfondo._x = Stage.width * 0.5;
    sfondo._y = Stage.height * 0.5;
    
    var sfondo:MovieClip = _root.createEmptyMovieClip("sfondo", 1);
    var altoSinistra:MovieClip = _root.createEmptyMovieClip("altoSinistra", 2);
    var altoDestra:MovieClip = _root.createEmptyMovieClip("altoDestra", 3);
    var bassoSinistra:MovieClip = _root.createEmptyMovieClip("bassoSinistra", 4);
    var bassoDestra:MovieClip = _root.createEmptyMovieClip("bassoDestra", 5);
    var inMezzo:MovieClip = _root.createEmptyMovieClip("inMezzo", 6);
    altoSinistra.attachMovie("altoSinistra", "dentro", 1);
    altoDestra.attachMovie("altoDestra", "dentro", 1);
    bassoSinistra.attachMovie("bassoSinistra", "dentro", 1);
    bassoDestra.attachMovie("bassoDestra", "dentro", 1);
    inMezzo.attachMovie("inMezzo", "dentro", 1);
    
    var mObj:Object = new Object();
    mObj.onLoadInit = function(target) {
    	target._alpha = 100;
    	target._width = Stage.width;
    	target._height = Stage.height;
    };
    mObj.onLoadStart = function(target) {
    	target._alpha = 0;
    };
    
    var controlloNeutro:Function = function () {
    	altoSinistra._x = 0;
    	altoSinistra._y = 0;
    	bassoSinistra._x = 0;
    	bassoSinistra._y = Stage.height-bassoSinistra._height;
    	altoDestra._x = Stage.width-altoDestra._width;
    	altoDestra._y = 0;
    	bassoDestra._x = Stage.width-bassoDestra._width;
    	bassoDestra._y = Stage.height-bassoDestra._height;
    	inMezzo._x = Stage.width/2-inMezzo._width/2;
    	inMezzo._y = Stage.height/2-inMezzo._height/2;
    };
    var liquid:Object = new Object();
    
    liquid.onResize = function() {
    	controlloNeutro();
    };
    Stage.addListener(liquid);
    
    controlloNeutro();

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Vedendo il codice mi viene da pensare che tu non abbia letto il mio post:

    dovrai richiamare questa codice ogni volta che effettui il resize:
    Mi pare chiaro che quel codice vada inserito nella funzione che viene richiamata al resize e non ancora prima che "sfondo" e il suo "canvas" vengano visti all'interno dello Stage. Inoltre se l'hai creato manualmente devi intanto eliminare le righe in cui lo ricrei

    var sfondo:MovieClip = _root.createEmptyMovieClip("sfondo", 1);

    altrimenti potresti sovrascriverlo o suggerire un comportamento anomalo al codice.

    Ritenta

  5. #5
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Grazie! Ma son dura c'è qualcosa che non ho ancora captato...

    La riga sullo sfondo effettivamente mi era sfuggita e l'ho tolta!
    ho spostato il codice dello sfondo dentro la funzione controllo neutro ma non è cambiato nulla.

    Specifico che nel mio primo frame visualizzo anche il movieclip sfondo.

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Se hai scritto correttamente il codice dovrebbe funzionare, puoi provare a ripostarlo con le modifiche che hai attuato.

    [edit] provato, mi funziona alla perfezione

    Codice PHP:
    Stage.scaleMode "noScale";
    Stage.align "TL";
    Stage.showMenu false;
    var 
    altoSinistra:MovieClip _root.createEmptyMovieClip("altoSinistra"2); altoSinistra.attachMovie("altoSinistra""dentro"1);
    var 
    altoDestra:MovieClip _root.createEmptyMovieClip("altoDestra"3); altoDestra.attachMovie("altoDestra""dentro"1);
    var 
    bassoSinistra:MovieClip _root.createEmptyMovieClip("bassoSinistra"4); bassoSinistra.attachMovie("bassoSinistra""dentro"1);
    var 
    bassoDestra:MovieClip _root.createEmptyMovieClip("bassoDestra"5); bassoDestra.attachMovie("bassoDestra""dentro"1);
    var 
    inMezzo:MovieClip _root.createEmptyMovieClip("inMezzo"6); inMezzo.attachMovie("inMezzo""dentro"1);
    var 
    liquid:Object = new Object();
    liquid.onResize = function() {
        
    altoSinistra._x 0;
        
    altoSinistra._y 0;
        
    bassoSinistra._x 0;
        
    bassoSinistra._y Stage.height-bassoSinistra._height;
        
    altoDestra._x Stage.width-altoDestra._width;
        
    altoDestra._y 0;
        
    bassoDestra._x Stage.width-bassoDestra._width;
        
    bassoDestra._y Stage.height-bassoDestra._height;
        
    inMezzo._x Stage.width/2-inMezzo._width/2;
        
    inMezzo._y Stage.height/2-inMezzo._height/2;
        if ((
    Stage.width Stage.height) > sfondo._width/sfondo._height) {
            
    sfondo._height Stage.width / (sfondo._width/sfondo._height);
            
    sfondo._width Stage.width;
        } else {
            
    sfondo._width Stage.height / (sfondo._height/sfondo._width);
            
    sfondo._height Stage.height;
        }
        
    sfondo.canvas._x sfondo.canvas._width * -0.5;
        
    sfondo.canvas._y sfondo.canvas._height * -0.5;
        
    sfondo._x Stage.width 0.5;
        
    sfondo._y Stage.height 0.5;
    };
    Stage.addListener(liquid);
    liquid.onResize(); 

  7. #7
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    mmm il codice è corretto mi sa che l'errore sia nel movieclip allora...

    Mi spiego meglio... le frecce e il box al centro vanno alla perfezione il problema rimane lo sfondo.

    Il mio fla è grande 955*600 mentre il mio movieclip con lo sfondo è 1200x1600. Per cui se la risoluzione è bassa sembrerebbe andare, ma se supera i 1200x1600 vedo il bianco di sfondo.
    RI-GRAZIE!

  8. #8
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da Sonikag
    mmm il codice è corretto mi sa che l'errore sia nel movieclip allora...

    Mi spiego meglio... le frecce e il box al centro vanno alla perfezione il problema rimane lo sfondo.

    Il mio fla è grande 955*600 mentre il mio movieclip con lo sfondo è 1200x1600. Per cui se la risoluzione è bassa sembrerebbe andare, ma se supera i 1200x1600 vedo il bianco di sfondo.
    RI-GRAZIE!
    Che sia più grande o più piccolo poco importa, ti consiglio di ricontrollare i nomi dei clip canvas e sfondo, non vedo altro che possa non far funzionare il tutto.

    PS. Per curiosità per quale versione di FP pubblichi?

  9. #9
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Pubblico con la versione 10 di fp e actionscript 2.0...

    I nomi sono corretti li ho sovrascritti con copia e incolla ma ancora nulla.

    Ho provato anche a togliere il clip sfondo dal primo stage e a seguire la procedura degli altri elementi, quindi aggiungendolo tramite codice come per gli altri elementi con:
    var sfondo:MovieClip = _root.createEmptyMovieClip("sfondo", 1);

    ma anche in questo modo non funziona.

    ---

    Altro tentativo strambo quando avevo già il clip posizonato nel primo stage ho modificato:
    sfondo._x = Stage.width * 0.5;
    in
    sfondo._x = 100;

    Ma anche qui continua a posizionarlo nello stesso punto di prima.

    ---

    Per cui secondo me c'è qualcosa che non va nel mio clip.

    Ho il clip sfondo che contiene il clip canvas che contiene la mia foto. Giusto no?

    Uff sicuramente è un errore del piffero ma vallo a pescare!!! Ri-grazie

  10. #10
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    CI SONO RIUSCITA
    Grazie mille!

    Mi è bastato mettere a sfondo l'isanza sfondo e a canvas l'istanza canvas!

    L'unica cosa che l'allineamento dell'immagine lo volevo in alto a sinistra per cui ho modificato le coordinate così

    sfondo.canvas._x = 0;
    sfondo.canvas._y = 0;
    sfondo._x = 0;
    sfondo._y = 0;

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.