begin process at 2012 05 27 19:18:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Flash

 > 

Archives

 > 

ActionScript

 > 

Rebond dans un cercle


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

Rebond dans un cercle

mardi 6 juillet 2004 à 15:36:11 | Rebond dans un cercle

firfelin

Rebonjour,
Encore un truc qui devrait être tout simple et que j'arrive pas à faire... O_o
Comment faire pour faire rebondir des trucs à l'intérieur d'un cercle? Un rectangle, ça j'arrive sans problème, mais un cercle, je vois pas...
Des idées, des exemples?
Merci

Mangez un castor, sauvez un arbre
vendredi 16 juillet 2004 à 02:43:04 | Re : Rebond dans un cercle

BlackWizzard

Administrateur CodeS-SourceS
j'avais codé un proto a partir d'une source d'alcys...
etant donné que c'est un proto, ça fonctionnera que sous MX6, sauf si tu compile en AS1 sous 2004.

donc, sur le _root, tu met ça:


_root.aTest = new Array();
function init_rebond(object, bool) {
object.vx = 2;
object.vy = -2;
object.k = -1;
object.r = 10;
object.r2 = object.r - 2;
object.inca = 0.08;
object.drag = false;
object.hit = bool;
}
function rebond(object, map) {
if (!object.drag) {
anx = object._x;
any = object._y;
long = Math.sqrt(object.vx * object.vx + object.vy * object.vy);
nn = Math.floor(long / object.r2);
px = object.vx * object.r2 / long;
py = object.vy * object.r2 / long;
for (i = 1; i <= nn + 1; i++) {
if (i <= nn) {
x = anx + i * px;
y = any + i * py;
} else {
x = anx + object.vx;
y = any + object.vy;
}
if (map.hitTest(x, y, true) == object.hit) {
anx += (i - 1) * px;
any += (i - 1) * py;
rebondir(object, map);
break;
} else {
if (i == nn + 1) {
afficher(object, map);
}
}
}
} else {
anx = x;
any = y;
x = object._x;
y = object._y;
object.vx = x - anx;
object.vy = y - any;
}
}
angle = function (aa, inc, object, map) {
do {
t1 = map.hitTest(anx + Math.cos(aa) * object.r, any + Math.sin(aa) * object.r, true);
t2 = map.hitTest(anx + Math.cos(aa + inc) * object.r, any + Math.sin(aa + inc) * object.r, true);
aa += inc;
} while ((aa < 6.28) && ((t1 && t2) || (!t1 && !t2)));
return (t1 != object.hit) ? aa - inc : aa;
};
rebondir = function (object, map) {
for (i = 1; i < 3; i++) {
x0 = (x + anx) / 2;
y0 = (y + any) / 2;
if (map.hitTest(x0, y0, true) == object.hit) {
x = x0;
y = y0;
} else {
anx = x0;
any = y0;
}
}
a = angle(0, object.inca, object, map);
if ((aa >= 6.28) || (t1 && t2) || (!t1 && !t2)) {
object.vx *= -1;
object.vy *= -1;
x = anx;
y = any;
} else {
ca = Math.cos(a);
sa = Math.sin(a);
tpx = -sa * object.k * (-object.vx * sa + object.vy * ca) + ca * (object.vx * ca + object.vy * sa);
object.vy = ca * object.k * (-object.vx * sa + object.vy * ca) + sa * (object.vx * ca + object.vy * sa);
object.vx = tpx;
long = Math.sqrt(object.vx * object.vx + object.vy * object.vy);
}
afficher(object, map);
};
afficher = function (object, map) {
object._x = anx + object.vx;
object._y = any + object.vy;
};
/*##########################################################################
FIN REBOND
*/
function addtoActives(object) {
_root.aTest.push(object);
}
function checkActives(object) {
for (i = 0; i <= (_root.aTest.length); i++) {
obj = eval(_root.aTest[i]);
_root.rebond(object, obj);
//_root.konsole.text = _root.aTest.toString();
}
}


puis, dans le code du clip censé rebondir:


onClipEvent(enterFrame) {
_root.rebond(this, _root.map);
}
onClipEvent(load) {
_root.init_rebond(this,true);
}


Pour que ça fonctionne, donc compile en AS1, et appele le clip qui sert de limite aux rebond "_root.map"

amuse toi...
[BlackWizzard] [http://www.blackwizzard.net]
lundi 19 juillet 2004 à 09:34:09 | Re : Rebond dans un cercle

firfelin

Une belle solution comme ça, servie sur un plateau:-)
Que dire..., à part merci infiniment. Tu viens de gagner ta place dans mon panthéon personnel:-) Il m'aurait fallu des années pour commencer à entrapercevoir un début d'esquisse de possibilité aussi bien foutue...





Mangez un castor, sauvez un arbre
lundi 19 juillet 2004 à 16:57:48 | Re : Rebond dans un cercle

BlackWizzard

Administrateur CodeS-SourceS
lol
c alsys qu'il faut remercier! moi je n'ai fait que transformer son code en proto ;)
[BlackWizzard] [http://www.blackwizzard.net]


Cette discussion est classée dans : arrive, cercle, rebond


Répondre à ce message

Sujets en rapport avec ce message

j'arrive pas a modifier une source!!!! [ par jph ] j'arrive pas a modifier une source!!!!je fais la modif mais il ne la prend pas en compte Utilisation de GotoAndPlay, Goto et GotoAndStop [ par cass74 ] Bonjour,Je débute avec flash et je n'arrive pas à utiliser les actions de controle de l'animation depuis un clip sur la séquence en cours.J'arrive à l Flash Enter [ par AEROSTYLE ] Bonjour,je sais que ça a peut être l'air idiot, mais je n'y arrive pas :J'ai un fond d'écran animé et j'aimerais que lorsqu'on appuye sur la touche EN Je suis débutante et ... [ par HFanny ] Bonjour à ceux qui liront mon message,je suis en train de faire un site internet et j'aimerais que lorsque je clique sur un graphique, une photo appar clip [ par wheel46 ] ca fais 4 jours que je suis sur ca et je commence a vraiment en avoir plein le c.. il faut que j'arrive a mettre un photo d'un clip qui se trouve dans Chargement, je n'arrive pas a cree une sequence chargement pour mon animation HELP ! [ par FlashN30 ] salut,g un pb je sais po comment cree une sequence de chargement, mon animation est prete mais elle dure 30s deplus y'a de la sic !!!svp merci B3N scrollbar [ par flashman007 ] ben voila il m'arrive un truc con : j'arrive ^pas a reduire la taille d'une scrollbar!!Mais comment k'ca se fait????hugo the best now and forever rebond proportionnelle ???? HELP [ par kodiask ] bonjour remoi dsl mais si kelkunpourrai expliker comment faire un rebond sur une barre ki sera effectuer par raport a lendroit ou la balle touche la b coment fé pour kan score arrive 0 va a la pg 2 [ par neo33 ] bonjour je suis entrain de faire un jeu de plateforme style marioet j'aimerai savoir comment faire pour ke quand le score arrive a zero sa aille a la Morphing entre 2 images [ par kinouseb ] Est-il possible de faire un morphing entre 2 images.J'y arrive entre un rond et un carré, mais je n'y arrive pas avec 2 images.Merci de votre aideSéba


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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,296 sec (3)

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