Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    126

    resize sballato con swf esterno contentente + oggetti

    buongiorno a tutti
    torno ad importunare il forum nella speranza di trovare aiuto
    come tanti utenti vorrei caricare un filmato esterno adattandolo alle proporzioni dello stage, a tal proposito utilizzo il seguente codice:
    var loader = new Loader(); //loader filmato esterno

    loader.load(new URLRequest("elemento.swf")); //carico lil filmato
    loader.contentLoaderInfo.addEventListener(Event.CO MPLETE, loader_completato);

    function loader_completato(e:Event) {

    loader.scaleY=stage.stageHeight/loader.contentLoaderInfo.height; //adeguo le proporzioni
    loader.scaleX=loader.scaleY;
    loader.x=(stage.stageWidth/2-loader.contentLoaderInfo.width/2); //imposto il centro
    loader.y=(stage.stageHeight/2-loader.contentLoaderInfo.height/2);
    addChild(loader); //aggiungo il loader
    }
    stage.addEventListener(Event.RESIZE, riposizionoOggetto); // funzione di riposizionamento al resize dello stage
    function riposizionoOggetto(e:Event):void //viene avviata quando ridimensiono lo stage
    {

    loader.scaleY=stage.stageHeight/loader.contentLoaderInfo.height;
    loader.scaleX=loader.scaleY;
    loader.x=(stage.stageWidth/2-loader.width/2);
    loader.y=(stage.stageHeight/2-loader.height/2);
    }

    tutto procede al meglio se il filmato esterno contiene un solo oggetto in caso vi siano più oggetti (forme, testi ecc) tutto viene sballato sia in dimensioni come nelle posizioni
    come posso rimediare
    ??
    grazie infinite per l'aiuto

    un saluto

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2009
    residenza
    Olbia
    Messaggi
    2,930
    Hai provato a caricare il filmato esterno in un mc contenitore ed applicare il resize a quest'ultimo?

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    126
    si ho provato
    ma con il medesimo risultato
    ho notato che se tolgo le righe in cui ridefinisco le proporzioni il problema non si manifesta
    ovviamente le misure non si adattano allo stage ma rimane centrato sempre

    forse potrei ridimensionare e posizionare ogni oggetto all'interno del filmato richiamato
    è una operazione realizzabile?


    grazie ancora

    ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2009
    residenza
    Olbia
    Messaggi
    2,930
    Cosa contiene lo swf esterno?

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

    Prova così:

    Codice PHP:
    stage.align StageAlign.TOP_LEFT;
    stage.scaleMode StageScaleMode.NO_SCALE;
    stage.addEventListener(Event.RESIZEonStageResize);

    var 
    loader = new Loader();
    var 
    contenitore:MovieClip = new MovieClip  ;

    loader.load(new URLRequest("elemento.swf"));
    loader.contentLoaderInfo.addEventListener(Event.COMPLETEloader_completato);
    loader.contentLoaderInfo.addEventListener(Event.COMPLETEresiza);

    function 
    resiza(evento:Event):void
    {
        
    stage.dispatchEvent(new Event(Event.RESIZE));
    }
    function 
    loader_completato(e:Event):void
    {
        
    addChild(contenitore);
        
    contenitore.addChild(loader);
    }
    function 
    onStageResize(evento:Event):void
    {
        
    contenitore.width stage.stageWidth;
        
    contenitore.height stage.stageHeight;
        
    contenitore.scaleX contenitore.scaleY contenitore.scaleY contenitore.scaleX:contenitore.scaleX contenitore.scaleY;

    Con questo codice il resize si applica all'unico stage esistente ovvero lo stage principale.
    Un .swf che viene caricato al suo interno, perde la sua proprietà stage e diventa un oggetto secondario del "caricatore".

    Come prima cosa, come ha scritto Randi devi inserire l'oggetto Loader in un MovieClip perchè un oggetto della classe MovieClip è più predisposto per rispondere a metodi tipo scaleX e scaleY di quanto lo sia un oggetto Loader.
    A caricamento completato del Loader, viene chiamato il resize in modo che l'oggetto caricato venga ridimensionato in relazione allo stage che lo contiene, diversamente, si ridimensionerebbe solo quando si ridimensiona la finestra del browser o del FlashPlayer.
    Ricordati di impostare la pubblicazione html su percentuale 100%.

    Se invece vuoi che il tuo filmato e tutto quello che contiene occupi solo una parte dello stage e mantenga le sue dimensioni fisse a prescindere dal resize dello stage, devi dargli dimensioni fisse ed eventualmente una funzione specifica per ridimensionarlo o spostarlo quando si applica il resize.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    126
    intanto grazie
    quanto proposto è davvero interessante anche se ho poco compreso l'ultima riga
    cerco di spiegare quanto sto cercando

    in un filmato principale tramite pulsanti carico alcuni filmati esterni, ogni volta che carico un filmato "scarico" il precedente. i filmati caricati contengono immagini, forme ecc, e quanto caricato nel suo insieme deve rimanere al centro dello stage del "chiamante", fino a qua nessun problema! ora vorrei che il "chiamato" adattasse le proprie dimensioni allo stage rpincipale e di conseguenza adeguasse il centro

    spero di essermi espresso bene

    ciao

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

    Se hai un filmato esterno e lo vuoi ridimensionare, ovviamente lo puoi fare solo al suo caricamento completato ovvero quando il programma dispone delle sue dimensioni di altezza e larghezza e se il resize dinamico dello stage del "caricatore" non ti serve puoi fare così:

    Codice PHP:
    var loader = new Loader();
    var 
    contenitore:MovieClip = new MovieClip  ;

    loader.load(new URLRequest("elemento.swf"));
    loader.contentLoaderInfo.addEventListener(Event.COMPLETEloader_completato);

    function 
    loader_completato(e:Event):void
    {
        
    addChild(contenitore);
        
    contenitore.addChild(loader);

        
    contenitore.scaleX contenitore.scaleX 0.5
        contenitore
    .scaleY contenitore.scaleY 0.5
        contenitore
    .stage.stageWidth contenitore.width 
        contenitore
    .stage.stageHeight contenitore.height 2

    In questo modo scali il contenitore (MC) con tutto il suo contenuto senza deformare nulla e se si allarga lo stage (manualmente) il MC rimane sempre in centro.

    Gli stessi valori scaleX e scaleY si potrebbero usare anche in una funzione di resize dinamico come quello che ti ho suggerito sopra ma considera sempre che per funzionare tutto correttamente, bisogna fare un rettangolo di sfondo, anche trasparente, che copra tutto lo stage del filmato che vai a caricare.
    Lo stage del filmato che diventa secondario viene annullato e il calcolo delle dimensioni si applica agli oggetti (MC, Button, Grafica) non allo stage.
    Risolvi quindi creando un oggetto sfondo che comprende tutta l'area su cui ti serve interagire.

    ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2009
    residenza
    Olbia
    Messaggi
    2,930
    Come sempre i tuoi script sono impeccabili ed estremamente utili

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    126
    chiedo venia, ma non riesco a venirne a capo
    ho copiato "paro paro" quanto scritto, ho impostato la percentuale su 100x100, ho realizzato un filmato "elemento.swf" contenente un solo quadrato e niente altro, posizionato in centro allo stage
    il risultato?
    dal filmato principale chiamo il "quadrato" e questo si colloca in una posizione non definita
    eppure il codice è assolutamente semplice e privo di funzioni strane, dove sbaglio?

    vi tedio ancora... vorrei che il "chiamato" adattasse le proprie misure allo stage sia al momento della chiamata come al momento della variazione delle misure dello stesso

    come mi sdebito??

    grazie

    LUCA

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

    In questo secondo script che ti ho proposto, non è utilizzato l'evento resize per cui non è necessario che imposti la pubblicazione su percentuale 100%.
    Viene scalato il MovieClip "contenitore" (+ 0.5) ma rimane di dimensioni fisse a prescindere dal ridimensionamento dello stage.

    Per fare in modo che il contenuto dello stage si ridimensioni in relazione alla larghezza/altezza della finestra o del browser prova ad aggiungere allo script sopra:

    Codice PHP:
    stage.scaleMode StageScaleMode.SHOW_ALL
    Dovrebbe ridimensionarsi tutto senza deformarsi.

    ciao


    Grazie a Randi per l'apprezzamento.

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.