begin process at 2012 05 27 10:42:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

mask et draw as3


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

mask et draw as3

mardi 27 octobre 2009 à 11:49:04 | mask et draw as3

meumeu64

bonjours à tous,
Je souhaite créer une vitre gelée qui se "dégel" au passage de la souris.
Je m'explique: j'ai une image de fond, un clip pardessus qui représente une vitre gelée,
un autre clip masqué identique au fond. le masque de ce dernier est vide, le gel disparaîtra
lorsque je dessinerai dessus.je souhaite que la forme dessiner soit particulière,
j'appelle cette forme doigt.

pour cela j'utilise ce code:
Code ActionScript :

//ajout de l'écouteur
stage.addEventListener(MouseEvent.MOUSE_OVER, traceMasque);

function traceMasque( mEvt:MouseEvent ):void {
	stage.addEventListener(Event.ENTER_FRAME, Masque);

}

//fonction de création du masque
function Masque( e:Event ):void {

	var doigts:doigt= new doigt();
	var myBitmap:BitmapData=new BitmapData(doigts.width,doigts.height,true,0);
	var bmp:Bitmap=new Bitmap(myBitmap);
	myBitmap.draw(doigts);
	bmp.x=mouseX-10;
	bmp.y=mouseY-10;
	masque.addChild(bmp);

}


mon problème est le suivant: le code fonctionne mais la forme est carré. Comment appliquer la forme exact de mon clip doigts sans qu'il me génère une zone carré autour de ce dernier?
mardi 27 octobre 2009 à 18:37:19 | Re : mask et draw as3

crackter

Réponse acceptée !
salut,

Un objet BitmapData peut être dessiné à l'écran par un objet Bitmap de deux façons : avec le rendu vectoriel en tant que forme de remplissage de bitmap, ou en exécutant une routine de copie de pixels plus rapide. La routine de copie de pixels est nettement plus rapide que la fonctionnalité de rendu vectoriel, mais l'objet Bitmap doit satisfaire à certaines exigences pour y faire appel :

* L'objet Bitmap ne peut pas subir d'étirement, de rotation ou d'inclinaison.
* L'objet Bitmap ne peut pas subir de transformation des couleurs.
* Aucun mode de fondu ne peut être appliqué à l'objet Bitmap.
* Aucun découpage n'est effectué par le biais de calques de masque ou de méthodes setMask().
* L'image en tant que telle ne doit pas être un masque.
* Les coordonnées de destination ne doivent pas correspondre à la limite d'un pixel entier.

Tu dois "vectoriser" ton dessin doigts (que tu as dû linker en bibliothèque j'imagine). Sinon tu aura toujours la bordure carrée.
Sinon tu peux parser l'image doigt et remplir par exemple un sprite avec son bitmapdata et te servir de ce sprite comme d'un masque (et non pas utiliser le bmp).
mardi 27 octobre 2009 à 21:19:52 | Re : mask et draw as3

zen69

Cracker,

Es-tu bien certain que ces contraintes sont encore effective en AS3... et setMask() c'est du AS2....


---------------------------------------------------------
Julien B.
mardi 27 octobre 2009 à 22:44:48 | Re : mask et draw as3

crackter

Guide de référence as3 :

[ Lien ]

mardi 27 octobre 2009 à 22:54:45 | Re : mask et draw as3

crackter

je sais bien que setMask c'est de l'as2, et est remplacé par mask tout court... mais la méthode reste la même.

pour ce qui est de ton doigt, si c'est un clip en biblio, il suffit de le vectoriser tout simplement, son "contour" deviendra vide ou pourra être effacé.
mercredi 28 octobre 2009 à 10:08:59 | Re : mask et draw as3

meumeu64

Réponse acceptée !
Tout d'abord merci à tout les deux de bien vouloir m'aider à résoudre mon problème.
Effectivement je peu remplacer mon clip "masque" par un clip dynamique de cette façon:
Code ActionScript :
var doigts:doigt= new doigt();
var monClip:Sprite= new Sprite();
var myBitmap:BitmapData=new BitmapData(doigts.width,doigts.height,true,0);

// puis dans mon "EnterFrame"
var bmp:Bitmap=new Bitmap(myBitmap);
myBitmap.draw(doigts);
bmp.x=mouseX-10;
bmp.y=mouseY-10;
monClip.addChild(bmp);
premier.mask=monClip;

premier étant l'occurrence de mon clip au premier plan et monClip le masque que je crée.

Malheureusement mon problème persiste dans les deux cas.
la forme du clip doigt est une forme sans contours, dessinée avec le pinceau de flash et
irrégulières.

Même si j'ajoute un contour, ou que je la remplace par un objet dessiné à la plume, j'ai encore ce problème. Qu'entendez vous par vectoriser?

Je suis passé par une méthode douteuse en attendant mais qui fonctionne:
Code ActionScript :

masque.buttonMode=true;

//ajout des écouteurs
stage.addEventListener(MouseEvent.MOUSE_OVER, traceMasque);

function traceMasque( mEvt:MouseEvent ):void
{
	
	stage.addEventListener(Event.ENTER_FRAME, createMasque);
	
}
//fonction de création du masque
function createMasque ( e:Event ):void
{
	var doigts:doigt= new doigt();
	doigts.x = mouseX;
	doigts.y = mouseY;
	masque.addChild(doigts);
}


ici "doigts" n'est plus un bitmap...
Ce code donne le même résultat si remplace mon clip masque par un clip dynamique+ la méthode mask.

Mais ce code me limite si je désire en faire un élaboré.




mercredi 28 octobre 2009 à 12:26:39 | Re : mask et draw as3

crackter

oui c'est normal pour ton bmp forme un "rectangle" car il dépend de ton bitmapdata qui a une taille de doigt.width,doigt.height. Même avec l'option transparent à true, l'image fait effectivement la taille du bitmapdata. Ton 2e code est fonctionnel et c'est normal car tu utilises une image "vectorisé" qui n'a pas réellement de bordure. C'est la méthode dont je voulais te parler plus haut mais j'avais dû mal me faire comprendre.
mercredi 28 octobre 2009 à 17:44:46 | Re : mask et draw as3

meumeu64

Ok, ok merci encore à tout les deux.


Cette discussion est classée dans : code, forme, bmp, masque, doigts


Répondre à ce message

Sujets en rapport avec ce message

Pb de level sur zone d etexte dynamique [ par ouiskie ] Salut,Dans mon anim, je voudrais charger une variable d'un fichier externe dans une zone de texte dynamique, et j'ai un petit problème:Ma zone de text visionneuse panoramique 360° [ par gregoire7 ] gregoire7Hello tout le monde !j'ai trouvé un code action-script pour créer une visionneuse panoramique en falsh http://membres.lycos.fr/devinfo/pano36 probleme avec onLoadInit et setMask [ par rvmem1 ] A travers une boucle, je charge dynamiquement des images sur la scene et je voudrais leur appliquer à chacune un masque. J'utilise un ecouteur pour c calques de masque [ par Solmajeur ] Bonjour, j'espère que je poste sur le bon forum. Dans le cas contraire, merci de me le faire savoir, ou de rediriger correctement ma demande. Je début Organisation de code [ par Orange73 ] Hello, Juste une petite question concernant la methode de developpement a appliquer pour ce genre de projet : 3 template different pour 3 element de pb avec lien html dans "textField" (as3) [ par inaden ] Bonjour, voilà j'importe des données via XML et je les traite... tout va bien, mais les liens qui sont dedans ouvre dans la même fen^tre que celle du Debug d'un player music xml. AS2 [ par Castelcerf ] Salut tout le monde; Je viens sur le forum car je suis désespérer. [^^confus5] J'ai fait un ptit site bénévolement pour un crew de muicien que je con Sauvegarder un jpg (as3) [ par Kangouroops ] Bonjour tout le monde, Je suis entrain de faire un générateur d'avatar et je bloque à un point essentiel, la sauvegarde de l'avatar. Alors j'ai testé MON CODE ATTACHEMOVIE FONCTIONNE MAL [ par BBFUNK01 ] Bonjour à tous, je suis en train d'essayer de rédiger un code pour charger un clip "clipform" de ma bibliothèque dans un clip vide "clipvide". Le cha remove clip [ par BBFUNK01 ] Bonsoir à tous, j'ai créé un clip chargé avec attachemovie, le clip est donc chargé lorsqu'on clique sur un bouton dans le menu. Dans le clip chargé s


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales