begin process at 2012 05 26 03:35:57
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ActionScripts

 > BOULES AIMANTÉES CONTRÔLÉES PAR LA SOURIS

BOULES AIMANTÉES CONTRÔLÉES PAR LA SOURIS


 Information sur la source

Note :
7,56 / 10 - par 9 personnes
7,56 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :ActionScripts Niveau :Débutant Date de création :22/05/2004 Date de mise à jour :25/06/2004 19:31:53 Vu / téléchargé :5 783 / 877

Auteur : SuperDevy

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Depuis le temps que je rêve d'une telle source, j'ai fini par la réaliser...

C'est un effet de boules aimantées (donc collées les unes aux autres) que on peut faire bouger avec la souris.

Vous trouvere dans le ZIP une application : le slalom. Je pense que l'on peut créer à partir de ceci un jeu stratégique et d'abilleté ; mais ça demande encore un peut de développement...

[Pour mettre un effet de pesanteur (poids) sur les billes il vous suffit de cliquer.]

--------------------------------------- ---------------------------------------
Créez un nouveau fichier avec un clip nommé "B0", et mettez ce code...

_root.onLoad = function() { N = 200;
for (i=1; i<=N; i++) {
_root.B0.duplicateMovieClip("B"+i, -i);
_root["B"+i]._x = B0._x+(i-1)*20;
_root["B"+i]._y = B0._y;
}; B0.startDrag(true);
};
function Aimant(n, p) {
R = 1; Px = 0; Py = 10;
for (i=1; i<=n; i++) { j = i-1;
x = _root["B"+i]._x-_root["B"+j]._x;
y = _root["B"+i]._y-_root["B"+j]._y;
sinA = y/Math.sqrt(x*x+y*y);
cosA = x/Math.sqrt(x*x+y*y);
y = R*sinA; x = R*cosA;
_root["B"+i]._x = _root["B"+j]._x+x;
_root["B"+i]._y = _root["B"+j]._y+y;
}
}
_root.onEnterFrame = function() { Aimant(N, P); };

l'effet est vachement trop cool
(prennez le même clip que moi : la boule rouge)

Source

  • //SuperDevy 25/06/2004
  • _root.onLoad = function() {
  • // Nombre & rayon des boules :
  • N=10, R=20;
  • for (i=1; i<=N; i++) {
  • _root.B0.duplicateMovieClip("B"+i, -i);
  • _root["B"+i]._x = B0._x+(i)*R*Math.SQRT1_2;
  • _root["B"+i]._y = B0._y+(i)*R*Math.SQRT1_2;
  • }
  • for (i=0; i<=N; i++) {
  • set("numB"+i, i);
  • _root["B"+i].onPress = function() {
  • this.startDrag();
  • _root.num = eval("num"+this._name);
  • _root.onMouseMove = function() {
  • Aimant(N, num);
  • };
  • this.onMouseUp = function() {
  • stopDrag();
  • delete _root.onMouseMove;
  • delete this.onMouseUp;
  • };
  • };
  • }
  • };
  • function Aimant(total, boule) {
  • for (i=boule+1; i<=total; i++) {
  • j = i-1;
  • x = _root["B"+i]._x-_root["B"+j]._x;
  • y = _root["B"+i]._y-_root["B"+j]._y;
  • sinA = y/Math.sqrt(x*x+y*y);
  • cosA = x/Math.sqrt(x*x+y*y);
  • y = R*sinA;
  • x = R*cosA;
  • _root["B"+i]._x = _root["B"+j]._x+x;
  • _root["B"+i]._y = _root["B"+j]._y+y;
  • }
  • for (i=boule-1; i>=0; i--) {
  • j = i+1;
  • x = _root["B"+i]._x-_root["B"+j]._x;
  • y = _root["B"+i]._y-_root["B"+j]._y;
  • sinA = y/Math.sqrt(x*x+y*y);
  • cosA = x/Math.sqrt(x*x+y*y);
  • y = R*sinA;
  • x = R*cosA;
  • _root["B"+i]._x = _root["B"+j]._x+x;
  • _root["B"+i]._y = _root["B"+j]._y+y;
  • }
  • }
  • J'ai supprimé le poids dans cette nouvelle version parce qu'il ne me semblait pas utile.
//SuperDevy 25/06/2004
_root.onLoad = function() {
	// Nombre & rayon des boules :
	N=10, R=20;
	for (i=1; i<=N; i++) {
		_root.B0.duplicateMovieClip("B"+i, -i);
		_root["B"+i]._x = B0._x+(i)*R*Math.SQRT1_2;
		_root["B"+i]._y = B0._y+(i)*R*Math.SQRT1_2;
	}
	for (i=0; i<=N; i++) {
		set("numB"+i, i);
		_root["B"+i].onPress = function() {
			this.startDrag();
			_root.num = eval("num"+this._name);
			_root.onMouseMove = function() {
				Aimant(N, num);
			};
			this.onMouseUp = function() {
				stopDrag();
				delete _root.onMouseMove;
				delete this.onMouseUp;
			};
		};
	}
};
function Aimant(total, boule) {
	for (i=boule+1; i<=total; i++) {
		j = i-1;
		x = _root["B"+i]._x-_root["B"+j]._x;
		y = _root["B"+i]._y-_root["B"+j]._y;
		sinA = y/Math.sqrt(x*x+y*y);
		cosA = x/Math.sqrt(x*x+y*y);
		y = R*sinA;
		x = R*cosA;
		_root["B"+i]._x = _root["B"+j]._x+x;
		_root["B"+i]._y = _root["B"+j]._y+y;
	}
	for (i=boule-1; i>=0; i--) {
		j = i+1;
		x = _root["B"+i]._x-_root["B"+j]._x;
		y = _root["B"+i]._y-_root["B"+j]._y;
		sinA = y/Math.sqrt(x*x+y*y);
		cosA = x/Math.sqrt(x*x+y*y);
		y = R*sinA;
		x = R*cosA;
		_root["B"+i]._x = _root["B"+j]._x+x;
		_root["B"+i]._y = _root["B"+j]._y+y;
	}
}

J'ai supprimé le poids dans cette nouvelle version parce qu'il ne me semblait pas utile.

 Conclusion

Les hics à rectifier dans la prochaine version :
- créer une détection de toutes les billes entre-elles pour qu'elles ne se traversent pas.
- améliorer le système de poids : la vitesse de chute due au poids est constante alors qu'elle est uniformément accélérée dans la réalité.
- économiser les ressources système : avec 50 billes, ça se met vite à lagger...
- Et sûrement d'autres...

En ce qui concerne le slalom, on peut élever le niveau en augmentant le nombre de billes ou le nombre de plots ou bien en rapprochant les plots...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip TREE AVEC RECHERCHE POUR AFFICHER UN XML.
Source avec Zip RETARDER L'EXECUTION D'UNE FONCTION
Source avec Zip COMPOSANTS POUR NON-PROGAMMEUR
Source avec Zip VOITURE INTELLIGENTE :: OPTIMISATION DE TRAJECTOIRE
Source avec Zip Source avec une capture BONNE TENUE DE ROUTE POUR CES VOITURES.

 Sources de la même categorie

Source avec Zip Source avec une capture OUVRIR UNE ANIMATION EXTERNE DANS UN CLIP VIDE. par KcHeY
Source avec Zip ZOOM SUR UNE IMAGE par yasdar
Source avec Zip Source avec une capture UN PEU DE MATH par yasdar
Source avec Zip Source avec une capture PARTICULE SYSTEM par yasdar
Source avec Zip Source avec une capture GALLERIE PHOTO AVEC XML par yasdar

Commentaires et avis

Commentaire de top30 le 22/05/2004 18:57:04

Sympa... 5/10 !

Commentaire de kingcobra le 31/05/2004 12:26:28

Super bien fait  8/10, c'est simple et ça marche

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

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,686 sec (4)

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