• User Newbie

    Utilizzo delle maschere in flash

    sto facendo una piccola applicazione in flash e mi chiedevo se è possibile fare una cosa: posso fare una maschera su un livello in modo che tutto ciò che viene nascosto dalla maschera non sia prioprio nascosto, ma solo opaco?

    Mi spiego: ho un'immagine di sfondo, l'immagine deve essere resa scura ovunque (es. nera con alpha = 50%), tranne in certi punti in cui si deve vedere bene...

    Ho provato ad usare le maschere in flash, ma il problema è che mi sembra di capire che se uso una maschera posso scegliere cosa far vedere sotto la maschera (i punti dell'immagine di sfondo che si devono vedere bene), ma il resto viene coperto completamente (che invece vorrei solo inscurire), il che non va bene...

    Qualcuno ha qualche suggerimento?


  • Super User

    Ciao gioz e benvenuto sul forum GT,

    si puo fare se hai la versione 8 (in su) di flash.

    C'e l'hai???:bho:


  • User Newbie

    Sì ce l'ho! Spara...sono tutto orecchie!!!


  • Super User

    Bene.:D
    Tanto per non darti spiegazione per poi farmi sentire dire che non usa flash 8.;)

    In ordine:

    • converte la foto in clip filmato e su l'area di lavoro li da un nome d'istanza (es:masked_mc)
    • crea la tua maschera graficamente. Direi che visto che il tutto è tipo buccato, disegna un quadratto da quale toglie le zone che non devono essere coperte. Quello sara convertito in simbolo grafico che chiamero (in libreria) gr_mask
    • crea un altro simbolo di tipo clip filmato in quale ci metti gr_mask. Potrai cambiare il valore alpha di gr_mask dal panello di proprieta
    • aggiunge quel clip filmato sul area di lavoro, posizionato come desiderato sopra masked_mc, e li da un nome d'istanza (es:mask_mc)
      Per quello avrai, on stage, masked_mc e mask_mc (che contiene gr_mask con alpha ridotto)
      Aggiunge l'actionscript al fotogramma:
    
    masked_mc.cacheAsBitmap = true;
    mask_mc.cacheAsBitmap = true;
    masked_mc.setMask(mask_mc);
    
    

    Basta.:D


  • User Newbie

    Ti ringrazio, solo che ho provato e in questo modo ottengo l'effetto contrario, nel senso che il risultato è il seguente:

    • masked_mc è visibile solamente nei punti in cui ho posizionato il quadrato del clip "mask_mc", il resto non si vede proprio, è tutto bianco
    • in quei punti masked_mc e più scuro rispetto la foto iniziale (grazie all'attributo alpha di mask_mc)

    Quello che però ho bisogno di ottenere è questo:

    • masked_mc è sempre visibile, ma più scuro rispetto la foto iniziale;
    • masked_mc è visibile normalmente (quindi non più scuro) nei punti in cui ho posizionato il quadrato del clip "mask_mc"

    E' possibile ottenere questo effetto? Forse usare le maschere non è il metodo adatto? Non so proprio come fare...:bho:


  • Super User

    e se ci metti semplicemente un clip filmato di forma quadratto nero con i buchi con alpha ridotto sopra la tua immagine?:bho:


  • User Newbie

    è proprio questo che non so fare...come faccio a mettere dei buchi in un clip? se si può fare ho risolto, perchè metto la trasparenza alfa nel clip e i buchi rimangono trasparenti


  • Super User

    Lo disegna.:D

    Fai una forma quadratta piena del colore che vuole. Fai un rotondo pieno di colore rosso (il colore non e importante visto che dopo lo toglie), lo metti sopra la forma quadratta (nello stesso fotogramma), deseleziona il tutto, riseleziona il tuo tondo e taglialo via. La sua forma sara tolta del quadro.


  • User Newbie

    oddio...sì ho provato e funziona...il fatto è che il numero e la dimensione dei buchi sono dinamici, li so leggendo da un file XML, quindi il tutto deve essere fatto con Actionscript.

    quindi dovresi fare queste operazioni da codice:

    1 - creo un emptymovieclip
    2 - ci disegna dentro il rettangolo
    3 - ciclo per tutti i buchi e glieli disegno dentro
    4 - li cancello (come????) e questi vengono tolti dal quadrato
    5 - assegno l'alpha al movlieclip

    mi sa che il punto 4 non sarà facile...
    comunque dici che la strada è questa, giusto? non c'è un modo semplicissimo alternativo?


  • Super User

    Sineramente non sarei dirtelo. Sarebbe di fare piu ricerca sui metodi di disegno in runtime con Actionscript.:bho: