|
La Communauté Webmaster 
| Pages: [1] |
 |
|
|
|
Auteur |
Sujet: soustraction de forme en as (Lu 1105 fois) |
|
 |
soustraction de forme en as
« sur: le 29-09-2004 a 16:56:32 » |
|
|
|
|
|
|
 |
Re:soustraction de forme en as
« Répondre #1 sur: le 30-09-2004 a 13:59:21 » |
|
tavman
Habitué
  
Hors-Ligne
Messages: 466

HS
|
Un petit code qui pourra te mettre sur la piste :
_root.createEmptyMovieClip("f", 0); // Dessin de la forme : f.lineStyle(0, 0, 100); f.beginFill(0xFF0000, 100); f.moveTo(100, 100); f.lineTo(100, 200); f.lineTo(200, 200); f.lineTo(200, 100); f.lineTo(100, 100); // RetraiDécoupage dans la forme : f.lineStyle(0, 0, 0); f.lineTo(125, 125); f.lineStyle(0, 0, 100); f.lineTo(125, 175); f.lineTo(175, 175); f.lineTo(175, 125); f.lineTo(125, 125); // On retourne au point de départ : f.lineStyle(0, 0, 0); f.lineTo(100, 100); f.endFill();
En fait, tu redessine ta forme a chaque fois alors C relou mais ca passe de manière invisible... Sinon, c'est clair que la meilleure technique C de jouer avec un masque ou avec un rond de la même couleur que le fond...
Au pire même, si tu veut mettre un ptit dessin dans le fond, tu peut rajoutter un morceau du dessin masqué par un cercle que tu positionne dynamiquement.... Je pense que c'est le plus simple... |
I-Radian |
|
|
 |
Re:soustraction de forme en as
« Répondre #2 sur: le 30-09-2004 a 15:54:21 » |
|
hacknours
P'tit nouveau
 
Hors-Ligne
Sexe: 
Messages: 137

Vive ActionScript !!!
|
Salut Tavman, Merci pour ta réponse, mais si tu as regardé le code que j'ai utilisé, c'est plus compliqué que çà. Je n'ai pas utilisé .lineTo (X, Y); mais .curveTo (X, Y, X', Y');
La montagne en question n'est pas faite de segements droits, mais de courbes.
Tu me dis que la meilleure technique est de faire un masque... D'où ma question: comment créé tu un calque masque en action script ?
La technique du rond de la même couleur que le fond n'est pas une bonne solution. Cela donne l'impression que la montagne est entamée, mais en réalité elle est juste cachée... Du coups si un missile passe au même endroit, la montagne est toujours là, caché derrière le rond, et le missile explosera "en l'air"...
Voici le code que j'utilise (sur un bouton):
on (release) { for(n=1; n<10; n++){ _root["rand"+n]=Math.random()*Stage.width/10; } _root.createEmptyMovieClip("MC", 0); _root.MC.beginFill( 0x555555, 50); _root.MC.lineStyle(2, 0x777777); _root.MC.moveTo(0,(Math.random()*Stage.height/2)+Stage.height/2); for (m=1; m<10; m++){ lex=(Stage.width*m)/10; lexx=(Stage.width*(m+.5))/10; _root["ley"+m]=(Math.random()*Stage.height/2)+Stage.height/2; leyy=(_root["ley"+m-1]+_root["ley"+m])/2; _root.MC.curveTo(lex,_root["ley"+m],lexx,leyy); } _root.MC.lineTo(Stage.width,(Math.random()*Stage.height/2)+Stage.height/2); _root.MC.lineTo(Stage.width,Stage.height); _root.MC.lineTo(0,Stage.height); _root.MC.endFill(); _root.nextFrame(); }
|
| |
|
|
|
|
 |
Re:soustraction de forme en as
« Répondre #3 sur: le 30-09-2004 a 17:42:37 » |
|
|
|
|
 |
Re:soustraction de forme en as
« Répondre #4 sur: le 02-10-2004 a 22:30:20 » |
|
hacknours
P'tit nouveau
 
Hors-Ligne
Sexe: 
Messages: 137

Vive ActionScript !!!
|
Salut, Bah oui, c'est bon, le setMask ne me pose pas de problème. Mais là où le bas blesse, c'est que je si j'utilise cette méthode, çà fait tout sauf ce que je voudrai: 1. Le cratère devient un mask du _root... résultat: on voit l'endroit du trou et on ne voit plus le reste (= inverse) 2. Le cratère devient mask d'un mask déjà existant... résultat: un morceau du mask existant devient apparant (mask sur mask = pas de mask) 3. Le cratère devient un mask du _root, mais je change le rond en un grand cadre moins le rond... résultat: flash ne semble pas prendre en compte le découpage à l'intérieur du cadre. Au final, ma scène apparaît en entier, donc pas de trou.
J'espère que mon problème est clairement expliqué. S'il existait un outil du style montagne.setUnMask(cratère); ce serait vachement plus simple. D'ailleurs un masque est sensé masquer par rapport à ce qu'il contient et non pas masquer tout sauf ce qu'il contient... enfin bon...
J'en profite pour posé une autre question (puisque celle ci ne semble pas avoir de solution): Est-il possible de transformer un clip en forme basique (équivalant à ctrl+B lors de l'édition) et vis et versa ?
exemple d'application: on a une colonne (MC) qui tombe et s'arrête en touchant le sol. transformée en forme je veux pouvoir en découper un morceau (de la taille que je veux), qui se transforme en deux MC dont un, qui touche le sol, reste stable et l'autre tombe à nouveau jusqu'à ce qu'il touche un sol. Le tout se retransforme en forme brute pour pouvoir le découper à nouveau.
Merci de votre patience pour me répondre. |
|
|
|
|
 |
Re:soustraction de forme en as
« Répondre #5 sur: le 03-10-2004 a 13:26:48 » |
|
tavman
Habitué
  
Hors-Ligne
Messages: 466

HS
|
Justement : ce que je te disai de faire, c'est la technique pour soustraire une forme mais de le faire sur ton masque...
Donc tu dessine dynamitquement tes montagnes et un masque par dessus qui a exactement la même forme que tes montagnes.
Maintenant, lorsque tu soustrait un rond a ton masque (et là, faut utiliser le script que je t'ai donné en fait), qu'est-ce qui se passe ?
Tu a un cercle sur le bord de ton masque a l'intérieur duquel tes formes sont inversées donc t'as du vide a la place de la montagne et de la montagne a la place du vide (uniquement dans le cercle). Bon, là tu va me dire "bahh oui, mais moi je veut pas de la montagne a la place du vide..." mais tu t'en tape : c'est ton masque et dans la forme en dessous, le bout de montagne rajoutté n'existe pas... Donc il apparait pas...
C'est compliqué a faire, on est d'accord, mais sinon je voit pas trop comment faire.
A moins que tu ne décide de faire l'inverse : Tu dessines ce qui n'est pas de la montagne, tu en fait un masque, et quand tu lance une roquette, tu regarde si le hitTest est faux
if (this.hitTest (maforme._x , maforme._y , 1) == false )
ca devrait marcher... Et là, tu rajoutte des cercles a ton masque et voila... Enfin bon là, c'est de la réflexion de "jme suis réveillé ya 20 minutes alors j'ai un peu la gueule dans le paté" mais je croit que ca pourrai marcher.
Bonne chance a toi  |
I-Radian |
|
|
| Pages:
[1] |
|
|
|
| |
|
|