Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    AS3 sfondo che si ridimensiona

    mi sto impazzendo con il ridimensionamento... caricatore altro non è che un UILoader questo è il mio codice ma non capisco come posso far sì che il filmato mi segue il ridimensionamento senza mostrarmi le fastidiose bande... ecco qua:

    stage.scaleMode = StageScaleMode.NO_SCALE;
    stage.align = StageAlign.TOP_LEFT;

    caricatore.width = stage.stageWidth;
    caricatore.height = stage.stageHeight;

    caricatore.x = 0;
    caricatore.y = 0;


    stage.addEventListener(Event.RESIZE, onResize);

    var proporzione = caricatore.width/caricatore.height;//ooo

    function onResize(event:Event):void {
    caricatore.width = stage.stageWidth;
    caricatore.height = stage.stageWidth/proporzione;
    }

    if (caricatore.height < stage.stageHeight ) {
    caricatore.height = stage.stageHeight;
    caricatore.width = stage.stageHeight*proporzione;
    }

    stop();

  2. #2
    nessuno mi aiuta?

    (lo so sono patetico con sto post)

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Bisognerebbe provare il tuo codice per capire esattamente di quali bande parli, comunque è un problema un tantino complesso che ho pressappoco risolto con questo codice (pressappoco perchè ogni tanto si incrocchia :sigh: ) :

    Codice PHP:
    if ((stage.stageWidth stage.stageHeight) > L.width/L.height) {
        
    L.height stage.stageWidth / (L.width/L.height);
        
    L.width stage.stageWidth;
    } else {
        
    L.width stage.stageHeight / (L.height/L.width);
        
    L.height stage.stageHeight;
    }
    L.content.L.content.width * -0.5;
    L.content.L.content.height * -0.5;
    L.stage.stageWidth 0.5;
    L.stage.stageHeight 0.5
    Nel mio codice L è il tuo "caricatore", il codice che ho scritto andrebbe inserito nella funzione di resize che va richiamata una prima volta per "allineare" l'immagine. Considera che andrebbe anche richiamata quando il caricamento dell'immagine è terminato all'interno del UILoader (non lo uso, quindi non so come gestisce le fasi di caricamento).

  4. #4
    mannaggia ...continuo a provare e riprovare ma non riesco a farlo andare...
    possibile che actionscript sia così complesso? o io così stupido?


    grazie intanto per l'aiuto ora il mio codice è così

    Codice PHP:

    stage
    .scaleMode StageScaleMode.NO_SCALE;
    stage.align StageAlign.TOP_LEFT;
    stage.quality=StageQuality.BEST;

    caricatore.0;
    caricatore.= -caricatore.width*2;

    var 
    proporzione:Number caricatore.width/caricatore.height;//ooo

    caricatore.width stage.stageWidth;
    caricatore.height stage.stageWidth/proporzione;

    this.stage.addEventListener(Event.RESIZEResizer);
    function 
    Resizer(e:Event):void {
       
    caricatore.width stage.stageWidth;
    caricatore.height stage.stageWidth/proporzione;
        } if (
    caricatore.height<stage.stageHeight){ 
            
    caricatore.height stage.stageHeight;
            
    caricatore.width stage.stageHeight*proporzione;
            }
            if ((
    stage.stageWidth stage.stageHeight) > caricatore.width/caricatore.height) {
        
    caricatore.height stage.stageWidth / (caricatore.width/caricatore.height);
        
    caricatore.width stage.stageWidth;
    } else {
        
    caricatore.width stage.stageHeight / (caricatore.height/caricatore.width);
        
    caricatore.height stage.stageHeight;
    }
    stop();
    caricatore.source 'immagine0.jpg'
    ma il risultato e lostesso... <-questo smile rende perfettamente l'idea
    mi smebra strano che non ci sia un metodo universalmente riconosciuto come funzionante ... avere un filmato che funzioni con qualsiasi risoluzione di schermo credo sia il punto principale dal quale partire...

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Stai mischiando il tuo vecchio codice con quello che ti ho suggerito, è chiaro che non vada, o usi uno o l'altro.
    Ora sto sul telefono, perciò non posso stare a scriverti le correzioni, vedrò se riesco più tardi.

  6. #6
    oddio scusa sono un macello con actionscript.. sei gentilissimo
    intanto che non torni insisto con i tentativi...
    vediamo se deduco bene nel tuo codice L.content.x ad esempio
    sarebbe la posizione dell'immagine caricata...

    nel mio caso l'UILoader ha un parametro che è source ..ovvero dove carica l'immagine
    però è sbagliato scrivere caricatore.source.x vero?

    l'Uiloader credo serva principalmente per caricare velocemente istanze senza stare sempre a crearle in actionscript.. me ne sconsigli l'utilizzo? già che sto imparando tantovale iniziare con il metodo migliore!

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Come ti dicevo, non utilizzo spesso i componenti e non ho mai utilizzato l'UILoader, ma guardando la guida di Flash vedo che anche questo componente come la classe Loader, contiene una proprietà "content" che restituisce l'oggetto che il componente carica.

    Praticamente bisogna agire come si fa con il Loader, gestendo l'evento "complete" e usandolo per gestire il ridimensionamento

    Codice PHP:
    stage.scaleMode StageScaleMode.NO_SCALE;
    stage.align StageAlign.TOP_LEFT;
    stage.quality=StageQuality.BEST;

    caricatore.maintainAspectRatio false;
    caricatore.scaleContent true;
    caricatore.addEventListener(Event.COMPLETEcomplete);
    function 
    complete (evt:Event=null):void {
        if (
    evtevt.target.content.smoothing true;
        try {
            if ((
    stage.stageWidth stage.stageHeight) > caricatore.width/caricatore.height) {
                
    caricatore.height stage.stageWidth / (caricatore.width/caricatore.height);
                
    caricatore.width stage.stageWidth;
            } else {
                
    caricatore.width stage.stageHeight / (caricatore.height/caricatore.width);
                
    caricatore.height stage.stageHeight;
            }
            
    caricatore.content.caricatore.content.width * -0.5;
            
    caricatore.content.caricatore.content.height * -0.5;
            
    caricatore.stage.stageWidth 0.5;
            
    caricatore.stage.stageHeight 0.5;
        } catch (
    err:Error) {};
    }

    stage.addEventListener(Event.RESIZEresize);
    function 
    resize (evt:Event=null):void {
        if (
    evtcomplete();
    }
    resize();
    stop(); 
    [edit] Ho provato, c'è un problema di fondo nell'utilizzo del componente, bisogna settare in maniera corretta le proprietà maintainAspectRatio e scaleContent per farlo funzionare.

    Comunque ti consiglio per fare questa cosa di usare la classe Loader, il componente in questo caso ha ben poco di pratico, come mai la scelta è ricaduta su questo?

  8. #8
    riempie lo schermo come voglio io ma mi pare che perde però la proporzione dell'immagine distorcendola...

    nel frattempo proseguendo nel mio studio ho scoperto che esistono le classi (WOW)... se io creo una classe con la funzione d'ingrandimento/rimpicciolimento proporzionale poi posso facilmente associarla ai diversi elementi del filmato senza scrivere chilometri di listati..vero?

  9. #9
    ho visto ora l'edit...
    la scelta è stata casuale ..sto imparando ed il primo metodo che ho trovato per fare quella cosa è stato l'uso di un componente...
    praticamente ho fatto uno sfondo che cambia con il passaggio del mouse su dei bottoni...

    non avendo ancora idea di come associare il loader allo stage
    (anche se spulciando mi pare di capire che addChild serva a questo)
    associavo un nome istanza "caricatore" appunto all'Uiloader e con una semplice funzione scambio l'immagine.

    flash è una figata mi piace proprio solo ch'è molto complicata la parte di programmazione.. per uno come me poi più avvezzo alla grafica far andare una funzione è una soddisfazione non da poco... le classi ancora non ho ben capito come usarle ma mi sembrano proprio belle...

    online ho trovato molto su AS2 ma sul 3 non c'è tantissimo... studio facendo errori e spulciando qui!

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da insurrection
    riempie lo schermo come voglio io ma mi pare che perde però la proporzione dell'immagine distorcendola...
    Credo che il problema stia proprio nell'uso dell'UILoader, ti conviene evitarlo e usare un Loader per fare questa cosa.

    Originariamente inviato da insurrection
    nel frattempo proseguendo nel mio studio ho scoperto che esistono le classi (WOW)... se io creo una classe con la funzione d'ingrandimento/rimpicciolimento proporzionale poi posso facilmente associarla ai diversi elementi del filmato senza scrivere chilometri di listati..vero?
    Direi di sì, anche se poi comunque la funzione di ridimensionamento la dovresti richiamare nel resize dello stage sul filmato principale.

    Originariamente inviato da insurrection
    ho visto ora l'edit...
    la scelta è stata casuale ..sto imparando ed il primo metodo che ho trovato per fare quella cosa è stato l'uso di un componente...
    praticamente ho fatto uno sfondo che cambia con il passaggio del mouse su dei bottoni...

    non avendo ancora idea di come associare il loader allo stage
    (anche se spulciando mi pare di capire che addChild serva a questo)
    associavo un nome istanza "caricatore" appunto all'Uiloader e con una semplice funzione scambio l'immagine.
    Sì ho capito quello che intendi fare, è comunque meglio il loader, se vuoi approfondire puoi farlo con questo articolo che ho scritto un po' di tempo fa: http://articoli.v2online.it/loader.html

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.