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

    dividere immagine con bitmap data

    buonasera

    ho cercato ovunque ma nn trovo cio che mi serve per cui vi chiedo:

    come si fa a dividere un'immagine (o meglio un movieclip) in modo da creare tanti piccoli pezzi? tipo puzzle ma senza incastri!!

    ho trovato un articolo sulla cosa ma è per as3 e a me serve che sia in as2

    la logica è:

    faccio una copia del mio movie creandomi una bitmap con la classe bitmapdata
    poi dovrei creare le righe e le colonne per tagliare..credo..
    ma non so come si faccia..

    quello che vorrei realizzare è l'esplosione di un movie (o immagine) in tanti piccoli pezzi che si disperdono...o qualcosa di simile..


    qualcuno mi da un idea di come si faccia??
    tutorial, pezzi di codice...qualcooooosa!!!!! pleaze! grazie mille


  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    avevo fatto questo:
    Codice PHP:
    import flash.display.BitmapData;
    import flash.geom.Rectangle;
    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 avvenuta separazione
            
    c.onPress = function() { this.startDrag() };
            
    c.onRelease = function() { this.stopDrag() };
            
    c.onReleaseOutside = function() { this.stopDrag() };
            
    // fine del codice di riprova
        
    }
    }; 
    e ad esempio lo puoi usare così
    Codice PHP:
    var mc1 this.createEmptyMovieClip("mc1"1);
    var 
    mc2 this.createEmptyMovieClip("mc2"2);
    var 
    mcload:Object = new MovieClipLoader();
    mcload.onLoadStart = function(target) {
        
    target._alpha 0;
    };
    mcload.onLoadInit = function(target) {
        
    splitImage(mc1mc255);
    };
    mcload.loadClip("image.jpg"mc1); 

  3. #3
    grandissimo and!
    è perfetto, fantastico!!!

    piccolo problemino però:

    ho provato a usarlo su un clip che contiene una scritta vettoriale e un pulsante..
    lo taglia ma mi crea un fondo bianco..why?

    c'è qualche proprietà da settare per la trasparenza?

  4. #4
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Prova sostituendo queste due righe cosi:

    var bitmap:BitmapData = new BitmapData(target._width, target._height, true, 0x00000000);
    var bitmap2:BitmapData = new BitmapData(wdt, hgt, true, 0x00000000);

    Non ho provato...



  5. #5
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    Ho editato perché avevo messo false al posto di true..

  6. #6
    grazie mille nep!

    nel frattempo leggendo in giro ho trovato la tua stessa soluzione ma mettendo "0x00FFFFFF"


    var bitmap:BitmapData = new BitmapData(target._width, target._height, true,0x00FFFFFF);
    var bitmap2:BitmapData = new BitmapData(wdt, hgt, true,0x00FFFFFF);


    ho testato anche col tuo codice e funziona comunque

    ora mi manca solo da creare una funziona che spazzi via i vari pezzetti!!
    se non ce la faccio vi rompo !!

  7. #7
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    si, cambia il colore, ma avendo alpha 00 praticamente il risultato è uguale...




    PS

    Senza stare li a leggere in giro, basta dare una occhiata alla documentazione, molto spesso si fa prima :-)

  8. #8
    grazie del consiglio molto apprezzato!

  9. #9
    problemino:

    lo script splitta l'immagine ma tra i vari "pezzi" crea uno spazio di 1 o 2 pixel...è possibile toglierlo e fare in modo che le varie parti siano tutte adiacenti?

  10. #10
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    è un problema di arrotondamenti che avviene quando la larghezza dell'immagine non divide esattamente per il numero di sezioni impostate
    era una cosa che mi ero ripromesso di aggiustare per una cosa mia, ma cone non ho mai portato a termine, magari questa è la volta buona dammi tempo

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.