Voila, c'est très simple et je suppose que ça ne marche pas parce que je fais une erreur de nouveau qui sera flagrante pour n'importe qui. Bref:
voila je fais un petit RPG pour m'amuser et approfondir mes cours AS3, et je suis bloqué" sur un petit truc.
Donc j'ai un perso qui se déplace sur l'écran, je clique quelque part, et il s'y rend, avec une animation et tout et tout (basé sur ce tutorial). Il se trouve que ça marche très bien, sauf que je veux utiliser une classe. Donc, après bien des efforts et du mélange avec la première partie du tutorial du jeu avoider, j'arrive à ça (visiblement j'avais besoin du timer, et ne faites pas attention à la variable Enemy, elle ne sert à rien pour l'instant):
package
{
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.MouseEvent;
import flash.events.Event;
public class SH1main extends MovieClip
{
public var enemy:Enemy;
public var alix:Alix;
public var gameTimer:Timer;
public function SH1main()
{
alix = new Alix();
addChild( alix );
alix.x = 120;
alix.y = 150;
gameTimer = new Timer(25);
gameTimer.addEventListener( TimerEvent.TIMER, onTick );
gameTimer.start();
}
public function onTick( timerEvent:TimerEvent ):void
{
var iswalking = false;
var goX = alix.x;
var goY = alix.y;
var movespeed = 0.1;
var dir = "down";
stage.addEventListener(Event.ENTER_FRAME, loop);
function loop(Event)
{
// animation handling
if (iswalking == true)
{
alix.w.play();
}
else
{
alix.w.gotoAndStop(1);
}
// direction handling
alix.gotoAndStop(dir);
// movement handling
if ((goY-movespeed)>alix.y)
{
alix.y += movespeed;
dir = "down";
}
else if ((goY+movespeed)<alix.y)
{
alix.y -= movespeed;
dir = "up";
}
if ((goX-movespeed)>alix.x)
{
alix.x += movespeed;
dir = "right";
}
else if ((goX+movespeed)<alix.x)
{
alix.x -= movespeed;
dir = "left";
}
if ((goY-movespeed)>alix.y || (goY+movespeed)<alix.y || (goX-movespeed)>alix.x || (goX+movespeed)<alix.x)
{
iswalking = true;
}
else
{
iswalking = false;
}
}
stage.addEventListener(MouseEvent.CLICK, setposition);
function setposition(MouseEvent)
{
goX = mouseX;
goY = mouseY;
}
}
}
}
J'ai aussi une classe Alix qui est un copié/collé de la classe Avatar du jeu avoider et qui ne devrait poser aucun problème.
Bon le problème, c'est que maintenant ça ne marche plus très bien, si je puis dire. Les animations ne marchent plus, la vitesse n'est pas constante, c'est l'horreur. Moi qui pensait que juste transférer le code dans une classe des le début serait facile et me simplifierait la tâche plus tard, et bien c'est pas ça. Donc voila, si une âme charitable pouvait m'éclairer de ses lumières, ça serait formidable. Merci d'avance si c'est le cas, sinon, bein... tant pis pour moi.