Aidez-moi pour le hittest

roberto la moule Messages postés 9 Date d'inscription samedi 17 juillet 2004 Statut Membre Dernière intervention 31 août 2008 - 19 juil. 2004 à 12:17
cs_tom Messages postés 1511 Date d'inscription samedi 8 décembre 2001 Statut Modérateur Dernière intervention 11 juin 2009 - 19 juil. 2004 à 14:39
Bonjour,
Est-ce que quelqu'un pourrait m'expliquer comment placer mon hittest dans une scène possèdant un calque avec une boule, un autre avec un bouton avec comme code
on (press, keyPress "8") {
setProperty ("boule", _y, y-10);
}
on (keyPress "2") {
setProperty ("boule", _y, Number(y)+10);
}
on (keyPress "6") {
setProperty ("boule", _x, Number(x)+10);
}
on (keyPress "4") {
setProperty ("boule", _x, x-10);
}
on (keyPress "1") {
setProperty ("boule", _x, x-10);
setProperty ("boule", _y, Number(y)+10);
}
on (keyPress "3") {
setProperty ("boule", _x, Number(x)+10);
setProperty ("boule", _y, Number(y)+10);
}
on (keyPress "7") {
setProperty ("boule", _x, x-10);
setProperty ("boule", _y, y-10);
}
on (keyPress "9") {
setProperty ("boule", _x, Number(x)+10);
setProperty ("boule", _y, y-10);
}
un autre avec un clip labyrinthe (possèdant mon labyrinthe)et un autre calque possèdant deux frames avec sur la première:
x = getProperty("boule", _x);
y = getProperty("boule", _y);
et sur la deuxième:
gotoAndPlay (1);

2 réponses

cs_tom Messages postés 1511 Date d'inscription samedi 8 décembre 2001 Statut Modérateur Dernière intervention 11 juin 2009
19 juil. 2004 à 14:36
Salut, bon alors, ne te decourage pas par ce que je vais dire en premier, ce sont des conseils d'ami:

Deja, tu as flash5, donc oublie les setProperty et les getProperty, c'est du flash4, deja deconseillé dans flash5...
Ensuite, pas besoin d'utiliser un bouton, car tu peux directement mettre tout ton code sur un seul endroit ( soit boule, soit labyrinthe)...
Et enfin, pas besoin d'utiliser un code dans une frame qui tourne en boucle, le on(enterframe) permet de faire la meme chose, et ca tiens sur une seule frame...

Astuces:
Dans un clip, le "this" signifie "soi-meme"
Si tu es dans le code d'un clip, et que tu veux controler un autre clip qui ne fait pas partie de ce premier clip, il faut passer par la scene (_root ou _level0):
_root.l_autre_clip, ou encore _root["l_autre_clip"] => fonctionne mieux que les eval().
Enfin, prends l'habitude d'utiliser les fonctions associées avec des . au lieu des fonctions ou il faut definir le clip dans les variables...

Mettons tout ton code sur le clip boule:
// on va determiner ou va se trouver la boule avant de la déplacer:
on(enterframe){
// ici, on s'occupe du deplacement horizontal
if(Key.isDown("6"){
deplacement_x = this._x + 10;
}else if(Key.isDown("4"){
deplacement_x = this._x - 10;
}
// et ici, du vertical
if(Key.isDown("2"){
deplacement_y = this._y + 10;
}else if(Key.isDown("8"){
deplacement_y = this._y - 10;
}
// apres, on deplace la boule  
// que si son centre ne vas pas toucher le labyrinthe:
if(!_root.labyrinthe.hitTest(deplacement_x, deplacement_y,true)){
this._x = deplacement_x;
this._y = deplacement_y;
}
}

Enfin, centre bien la boule dans ton clip boule pour que tu n'aies pas de probleme d'alignement...

J'espere que ca t'aideras à y voir plus clair en programmation...

@+ Tom
0
cs_tom Messages postés 1511 Date d'inscription samedi 8 décembre 2001 Statut Modérateur Dernière intervention 11 juin 2009
19 juil. 2004 à 14:39
oups, dans les if, j'ai oublié des parentheses:

on(enterframe){

if(Key.isDown("6")){
deplacement_x = this._x + 10;
}else if(Key.isDown("4")){
deplacement_x = this._x - 10;
}

if(Key.isDown("2")){
deplacement_y = this._y + 10;
}else if(Key.isDown("8")){
deplacement_y = this._y - 10;
}

if(!_root.labyrinthe.hitTest(deplacement_x, deplacement_y,true)){
this._x = deplacement_x;
this._y = deplacement_y;
}
}



voila, copier-coler devrais suffir...

@+ Tom
0
Rejoignez-nous