CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[AS]Vilaine fonction qui boucle

fil_razorback
fil_razorback
Niveau 10
29 avril 2005 à 16:57:04

Oui, c´est le meme principe, une boucle qui passe la map en revue, un tile a chaque " passage de boucle" et lui attaches sa propriété onRelease;
exactement ca.
Precisions:
1-La fonction pathfinder ne modifie que la variable " tileoualler".
2-Ce systeme de déplacement n´est pas définitif DU TOUT, il me sert surtout à tester mon pathfinding.

et zou vla le code:

function buildMap() {
//on colle tout sur un clip vide ( mieux pour scroller)
this.attachMovie("empty", " clip", d);
this.clip._x = startX;
this.clip._y = startY;
var mapWidth = map[0].length;
var mapHeight = map.length;
//boucle construcrice
for ( var i = 0; i<mapHeight; ++i) {
for ( var j = 0; j<mapWidth; ++j) {
tilename = " t_"+i+"_"+j;
this.clip.attachMovie("tile", tilename, ++d);
this.clip[tilename]._x = ( tileW/2)*(j-i);
this.clip[tilename]._y = ( tileH/2)*(j+i);
tilegraph = map[i][j][0]+1;
this.clip[tilename].gotoAndStop(tilegraph);
//survol du tile
this.clip[tilename].onRollOver = function() {
tilesurvole[0] =
Math.round((((this._x)/(tileW/2))+((this._y)/(tile
H/2)))/2);
tilesurvole[1] = Math.round(tilesurvole[0]-(this._x)/(tileW/2));
this.attachMovie("tileselectionne", " tileselectionne", 2500);
this.tileselectionne._y -= map[tilesurvole[1]][tilesurvole[0]][2];
};
this.clip[tilename].onRollOut = function() {
this.tileselectionne.removeMovieClip();
};
//clique sur le tile, si praticable
if ( map[i][j][1] == 0) {
this.clip[tilename].onRelease = function() {
tileclique = tilesurvole;
};
}
//place le perso
if ( i == charPos[1] && j == charPos[0]) {
this.clip.attachMovie("Klarik-Wizard", " player3", mapWidth*mapHeight+1);
this.clip.player3._x = ( tileW/2)*(j-i);
this.clip.player3._y = ( tileH/2)*(j+i);
this.clip.player3.gotoAndStop(1);
//se deplace si pas à sa place
this.clip.player3.onEnterFrame = function() {
if ( (tileclique[0] ! == charPos[0]) or ( tileclique[1] ! == charPos[1])) {
pathfinder(charPos, tileclique);
this._x = ( tileW/2)*(tileoualler[0]-tileoualler[1]);
this._y = ( tileH/2)*(tileoualler[0]+tileoualler[1]);
charPos = tileoualler;
}
};
}
}
}
}
buildMap();
stop;

tomtomclancy
tomtomclancy
Niveau 9
29 avril 2005 à 17:05:11

j´ai pas fini de tout lire ton code ( comprendre)
Mais y a ca qui me derange

tilesurvole[0] =

Math.round((((this._x)/(tileW/2))+((this._y)/(tile

H/2)))/2);
tilesurvole[1] = Math.round(tilesurvole[0]-(this._x)/(tileW/2));

quand tu parle du this, tu veux parler de this.clip[tilename] ou c´est moi qui me suis trompé ?

pour metrre un peu d´ordre dedans utilise la fonction with(cible) {}

du genre partout ou tu fais appel a this.clip[titlename] tu le mes dans
with(this.clip[titlename]) {
_x = . ..;
_y = . ..;
.
.
.
}

fil_razorback
fil_razorback
Niveau 10
29 avril 2005 à 17:09:07

Oui, ce this fait bien référence à . this.clip[tilename] ( en passant tu admires la belle formule que j´ai mis au point?)
Je vais consulter l´aide de flash sur with, je connais pas ( encore)...

fil_razorback
fil_razorback
Niveau 10
29 avril 2005 à 17:15:25

with est super simple à utiliser :-)
Ici je pense que ca arrangerait pas beaucoup la lisibilité par conte je vais m´en servir ailleurs :-p
( PS: ils sont pas très fournis à " W" l´aide de flash)

DarkRellik
DarkRellik
Niveau 6
29 avril 2005 à 17:18:27

Poutou Poutou mon Filou :coeur:

fil_razorback
fil_razorback
Niveau 10
29 avril 2005 à 17:41:06

Euh...il est mort tomtom?

tomtomclancy
tomtomclancy
Niveau 9
29 avril 2005 à 17:41:53

:lol: DarkRellik te traques

tu as donc corrigé ton code ?
et remplacé this._x, par this.clip[tilename]._x

fil_razorback
fil_razorback
Niveau 10
29 avril 2005 à 17:44:14

> :rire:

>Ben non, elle marche très bien cette partie du code, j´y touche pô lol :-)

tomtomclancy
tomtomclancy
Niveau 9
29 avril 2005 à 17:48:15

ouaip autant pour moi j´avais pas fais attention

DarkRellik
DarkRellik
Niveau 6
29 avril 2005 à 17:52:59

Tant que filounet ne m´aura pas fait un poutou poutou je le traquerai :coeur:

fil_razorback
fil_razorback
Niveau 10
30 avril 2005 à 10:51:03

Je viens de refaire une série de test et le probleme n´est pas là ou je le pensais...(j´ai tout vérifié avec des traces)
La fonction onRelease s´execute corretement et le probleme vient de celle ci:
this.clip[tilename].onRollOver = function() {
trace(charPos);
tilesurvole[0] =
Math.round((((this._x)/(tileW/2))+((this._y)/(tile
H/2)))/2);
tilesurvole[1] = Math.round(tilesurvole[0]-(this._x)/(tileW/2));
this.attachMovie("tileselectionne", " tileselectionne", 2500);
this.tileselectionne._y -= map[tilesurvole[1]][tilesurvole[0]][2];
trace(charPos);
trace(´ ´);
};

Au départ elle marche bien, mais une fois que j´ai cliqué sur un tile, elle se met a modifier l´array charPos et le rend égal à tilesurvole...
J´avoue ne plus comprendre:
-Pourquoi ca marche la premiere fois?
-Pourquoi cette fonction se met elle à modifier charPos ?

fil_razorback
fil_razorback
Niveau 10
30 avril 2005 à 12:49:31

Suite à un commentaire de Mr_monkey via MSN, je me demande si ca pose pas un problème d´avoir plusieurs fois

un_mc.onQqch = function ( ){
instructions
}
Du coup je me retrouve ace plusieurs fonctions anonymes non?

tomtomclancy
tomtomclancy
Niveau 9
30 avril 2005 à 14:19:09

non du tout c´est pas ca qui lui pose probleme.

je vois tilesurvole[1] dans le code, est-ce qu´il fait partie du bouton?, ou aurais tu oublier de remonter l´arborescence pour aller chercher le BON tableau.

fil_razorback
fil_razorback
Niveau 10
30 avril 2005 à 15:06:02

Alors, j´etais pas la depuis une bonne demi heure, ma connexion a coupé j´en ai profité opur recoder la moitié du truc, ca s´est considérablement allongé et complexifié.
J´ai pas touché les parties avec tilesurvole, elles marchent bien.
Bref avec mes grosses modifs, ca marche impec et ca peut gérer autant de personnages que je veux, ils reagissent au quart de tour efficacement, peuvent changer de destination en cours de route etc etc...Bref c´est la FEEEEEEEEEEEEEEEEEETTTTTE!

Vive le Création de Jeux De Jv.com
Merci tout le monde ^^

Si ca interesse quqlqu´un je poste mon ode :)

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware