Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    1,037

    BitmapData creare background dinamico

    Ciao a tutti;
    Quello che vorrei realizzare un background costruito da più immagini a random e farlo scorrere dal basso.
    Nella libreria attualmente ho 2 immagini concatenati con id obj1 e obj2
    il codice che ho scritto:

    import flash.display.BitmapData;
    var baseBitmap:BitmapData = new BitmapData (Stage.width, Stage.height, true, 0xFF0000);
    var bmap1:BitmapData = BitmapData.loadBitmap ('obj1');
    var bmap2:BitmapData = BitmapData.loadBitmap ('obj2');
    baseBitmap.copyPixels(bmap1, new Rectangle(0, 0, bmap1.width, bmap1.height), new Point(0, 0));
    baseBitmap.copyPixels(bmap2, new Rectangle(0, 0, bmap2.width, bmap2.height), new Point(bmap1.width, bmap1.height));


    ma non visualizza niente, probabilmente la metodologia usata da me è sbagliata??
    Secondo ho provato a usare il metodo "scroll" il problema e che lasscia una specie di scia dopo lo spostamento, ho provato anche con il metodo draw usando la classe matrix ma l'effett è lostesso.
    Qualche idea???
    Grazie mille in anticipo

  2. #2
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    nel codice non vedo da nessuna parte un attachBitmap di "baseBitmap", l'hai semplicemente omesso?

    in quanto all'idea, è interessante, ma non ho capito bene come va applicata e mi chiedo se sia necessario stare a sbattersi con la classe BitmapData, quando potresti ottenere la stessa cosa con degli attachMovie e qualche calcolo "random"

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    1,037
    Cia and80,
    Grazie per la risposta.
    Ti spego brevemente quello che voglio fare, in pratica vorrei animare delle nuvole, L'unico problema e che la CPU sale un modo puroso forse gli effetti in più che ho applicato, + ombra.
    E stavo pensando che magari lavorando con la classe BitmapData, sarebbe più semplice e meno pesante. Anche quello e vero che per il momento non ho avuto opportunità di dover sfruttare questa classe percui probabile che il pc faccia più fatica.
    Tempo fa ho visto un esempio al contrario, del gioco mario bros. Nella libreria aveva solo una immaggine per lo sfondo e veniva "spezzata" con la classe BitmapData
    Una domanda, come mai se imposto cacheAsBitmap = true, il blendMode (fusione) viene ignorata?
    Grazie

  4. #4
    ciao Polliotto, secondo me ti conviene spezzettare a monte le immagini nuvole crearele come clip dargli l'ombra e poi racchiuderle in un clip da utilizzare con l'attachMovie

    Io mi sono sbattuto per creare dinamicamente immagine, riflesso ed ombra con una maschera per il riflesso ed ho riscontrato non pochi problemi con cacheAsBitmap da gestire dinamicamente... una volta vedevo tutta l'immagine riflessa una volta l'immagine con la sfumatura della maschera associata. Alla fine l'ho fatta a mano con l'ATtach Movie e tutta l'operazione non ha interferito con la CPU anzi mi sembra vada meglio

    la BitmapData mi sembra un bello sbattimento ... poi fai tu. Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    1,037
    L'unica problema con la ombra e che devo fare un calcolo esatto per la sua posizione e non posso includere nell immagine
    Deve avere l'effetto della profondità.

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    non avresti un link in cui vedere l'effetto realizzato fino ad ora? in modo da capire esattamente come ci si potrebbe muovere nel caso...
    comunque non pensare che utilizzare la classe BitmapData al posto dei movieclip, sia molto meno dispendioso per la CPU... certo è che magari creando un'unica bitmap staresti in pratica muovendo una sola immagine invece che un tot di più
    però in questo caso potresti "optare" per un draw() degli elementi composti attraverso i movieclip, eliminarli ed usare quell'unica immagine disegnata dall'insieme... non so se è molto chiaro quello che ho scritto in questa frase ... ti faccio un esempio per chiarire

    Codice PHP:
    import flash.display.BitmapData;
    Stage.align "TL";
    Stage.scaleMode "noScale";
    Stage.showMenu false;
    // due immagini jpg in libreria concatenate come "imm1" e "imm2"
    // entrambe le immagini hanno la stessa dimensione 
    // così posso creare una griglia regolare grazie a queste proprietà
    var bmd1:BitmapData BitmapData.loadBitmap("imm1");
    var 
    bmd2:BitmapData BitmapData.loadBitmap("imm2");
    var 
    bgmc:MovieClip this.createEmptyMovieClip("bgmc"1);
    var 
    sx:Number System.capabilities.screenResolutionX;
    var 
    sy:Number System.capabilities.screenResolutionY;
    var 
    gx:Number Math.round(sx/bmd1.width);
    var 
    gy:Number Math.round(sy/bmd1.height);
    var 
    grid:Number gx*gy;
    var 
    lx:Number gx*bmd1.width;
    for (var 
    i:Number 1i<=gridi++) {
        var 
    l:Number i-1;
        var 
    r:Number Math.round(Math.random())+1;
        var 
    p:MovieClip = (i>1) ? bgmc["m"+l] : null;
        var 
    m:MovieClip bgmc.createEmptyMovieClip("m"+ii);
        
    m.attachBitmap(this['bmd'+r],1);
        
    m._x = (!= null) ? ((p._x>=lx-bmd1.width) ? p._x+bmd1.width) : 0;
        
    m._y = (!= null) ? ((m._x != 0) ? p._y p._y+bmd1.height) : 0;
    }
    var 
    bd:BitmapData = new BitmapData(sxsytrue0x00FFFFFF);
    bd.draw(bgmc);
    var 
    bgmc:MovieClip this.createEmptyMovieClip("bgmc"1);
    bgmc.attachBitmap(bd,1);
    bgmc.cacheAsBitmap true
    con questa routine avremo in finale bgmc che è la nostra singola bitmap grande quanto le dimensioni dell'intero schermo (screenResolutionX e screenResolutionY)

    >>Una domanda, come mai se imposto cacheAsBitmap = true, il blendMode (fusione) viene ignorata?

    non mi risulta, però non ho provato con flash 8, ormai sto lavorando solo su CS3...

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.