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

    [Flash 8] Evitare duplicazione selvaggia di jpg per mashere

    Ciao a tutti, spero che il titolo sia chiaro abbastanza da capire di che voglio parlare.

    Questo è quello che ho: ho uno stage diviso in tanti rettangoli. Ogni rettangolino è un movieclip che attualmente fa da maschera ad una foto.
    Quindi spostando i rettangoli posso decidere quanti e quali scacchi mostrare. Fin qui ci siamo.
    Siccome l'effetto di comparsa e scomparsa del rettangolo è giustamente immediato, vorrei far comparire e scomparire ogni quadro sfumando.

    Per fare ciò pensavo di un far mascherare ad ogni rettangolo una copia della foto. Così ogni rettangolo farà maschera a sé e posso fargli sfumare la foto che gli appartiene. Solo che così ottengo attualmente 16*9 copie di una foto a 900*500 che non ho provato ma penso sia piuttosto pesante.

    Visto che c'è un oggetto bitmap mi domandavo:
    C'è un sistema per estrapolare dalla jpg originale la porzione esatta di foto che devo mascherare? In questo caso ottengo tutte immagini di dimensioni per esempio 100*50, e credo sarebbe stupendo.
    Non so se si possa risolvere in altro modo, non conosco ancora le potenzialità del nuovo flash. So di un oggetto cache, ma pare serve solo per eliminare i calcoli vettoriali rasterizzando al volo una bitmap del movieclip.

  2. #2
    Come pensavo è infattibile duplicando l'immagine, da me per creare il filmato ci mette 4/5 sec. Allora situazione attuale

    http://www.neres.com/demo/flash/prova.html

    Come vedete al rollover, la foto sotto viene smascherata a rettangoli. Il rettangolo c'è o non c'è, non mi piace.

    Come lo vorrei: così

    http://www.neres.com/demo/flash/prova2.html

    (cliccate per l'effetto). Solo che no posso duplicare l'immagine mille volte altrimenti come vedete il pc muore

  3. #3
    Minchia!!!
    Risolto! con cacheAsBitmap si possono fare maschera alfa, così mi basta cambiare l'alfa dello scacco corrispondente e sono a cavallo!!! Muore un po' meno...ma muore comunque!


    http://www.neres.com/demo/flash/

    c'è qualche problema col preload ma ci siamo ^^

  4. #4
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    un'esposizione marzulliana direi

    comunque se non vuoi ricorrere alle maschere flash 8 permette l'uso della classe BitmapData per rappresentare un'immagine o una porzione di essa, rasterizzando il risultato e semplificando le cose... così come tu stesso dicevi in precedenza

    il sistema è abbastanza semplice e fa uso di un ciclo che costruisce i pezzi

    un esempio al volo:

    Codice PHP:
    import flash.display.BitmapData;
    import flash.geom.Rectangle;
    this.createEmptyMovieClip("mc1"1);
    this.createEmptyMovieClip("mc2"2);
    function 
    splitImage (target:MovieClipdestination:MovieClipsplitX:NumbersplitY:Number):Void {
        var 
    totalSplit:Number splitX*splitY;
        var 
    wdt:Number target._width/splitX;
        var 
    hgt:Number target._height/splitY;
        var 
    coordArray:Array = new Array();
        for (var 
    0i<totalSpliti++) {
            var 
    i-1;
            var 
    = (coordArray[h][0]<target._width-wdt) ? coordArray[h][0]+wdt 0;
            var 
    = (!= 0) ? coordArray[h][1] : (h>-1) ? coordArray[h][1]+hgt 0;
            
    coordArray.push([xy]);
        }
        for (var 
    0k<coordArray.lengthk++) {
            var 
    bitmap:BitmapData = new BitmapData(target._widthtarget._height);
            var 
    bitmap2:BitmapData = new BitmapData(wdthgt);
            var 
    blend:String "normal";
            var 
    rectangle:Rectangle = new Rectangle(coordArray[k][0], coordArray[k][1], wdthgt);
            
    bitmap.draw(target);
            
    bitmap2.copyPixels(bitmaprectangle, new Point(00));
            var 
    c:MovieClip destination.createEmptyMovieClip("bmd"+kk);
            
    c._x coordArray[k][0];
            
    c._y coordArray[k][1];
            
    c.attachBitmap(bitmap21);
            
    // codice di riprova della riuscita separazione
            
    c.onPress = function() { this.startDrag() };
            
    c.onRelease = function() { this.stopDrag() };
            
    c.onReleaseOutside = function() { this.stopDrag() };
            
    // fine del codice di riprova
        
    }
    };
    var 
    mcload:MovieClipLoader = new MovieClipLoader();
    var 
    mclist:Object = new Object();
    mclist.onLoadStart = function(target) {
        
    target._alpha 0;
    };
    mclist.onLoadInit = function(target) {
        
    splitImage(targetmc255);
    };
    mcload.addListener(mclist);
    mcload.loadClip("image.jpg"mc1); 
    lo svantaggio rispetto alle maschere è il codice più lungo e il fatto che devi utilizzare due movieclip per gestire la cosa

  5. #5
    Bella, grazie, domani lo provo, magari va meglio delle maschere in alfa (che vanno meglio ma non meglissimo ).
    Tanto ci devo rimettere mano per evitare alcuni onEnterFrame inutili.

    Praticamente l'effetto funziona così:
    Al rollover creo un clip vuoto per farci l'ontenterframe, ogni 3 frame faccio partire un ciclo che mi va a cercare tutti i quadrati in posizione 1. A questi gli lancia onEnterFrame che li fa "alfare" .
    Poi aspetta tre frame e fa partire quelli di livello 2, etc, fino alla fine.

    Solo che se invece di fare tot onEnterFrame su quelli di pari livello:

    ovvero
    codice:
    for (i=0;i<5;i++){
       eval("quad"+i).onEnterframe=function(){
           if (this._alpha<max){
               this._alpha+=passo
           } else{
                delete this.onEnterFrame
           }
       }
    }

    faccio una cosa tipo

    codice:
    clip.onEnterFrame=function(){
        for (i=0;i<5;i++){
               eval("quad+i)+=passo
        }
        if (quad0._alpha>max){
            delete this.onEnterFrame
        }
    }
    Risparmio qualche risorsa (almeno credo )

  6. #6
    Ehm...
    nel momento dell'effetto il mosaico di bitmap sembra una soluzione migliore, sulla mia macchina va più liscio, però ci mette di più a creare le tessere.

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    è un "di più" apprezzabile? perchè a me le crea in maniera praticamente immediata

  8. #8
    Sì porca da me mi ammazza tutto, ho creato l'applicazione reale e non è più fattibile. (la mia è una macchina del 2001 mi pare, ha i suoi anni e va da allora, senza mai una formattazione)
    L'area dell'immagine è 900*500, già con una ci mette 3-4 secondi per preparare lo stage, ma con 4 foto mi si blocca troppo tanto che compare il messaggio dello script. In fase di effetto però è quello che va più fluido, nonostante le risorse della cpu salgano apparentemente alla stessa maniera.

    Volendo posso caricarti il file (lunedì) così vedo come si comporta con la tua macchina

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    ok, aspetto il tuo file allora

  10. #10
    http://neres.com/demo/flash/layout_bitmap.html

    In questo esempio vengono create le "tessere" di 4 foto jpg.

    Se vuoi il fla a scopo debug fammi sapere

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.