Comment faire dans ActionScript 3 dans Flash un MovieClip qui suit le curseur, mais qui est contraint à la forme irrégulière d'un autre MovieClip?FLASH/AS3: La figure qui suit le curseur est contrainte à une zone irrégulière
Edit: cela est un peu ce que je dois:
stage.addEventListener(MouseEvent.MOUSE_MOVE,follow);
function follow(evt:MouseEvent){
if(container.hitTestPoint(mouseX, mouseY, true)) {
cursor.x = mouseX;
cursor.y = mouseY;
} else {
var dx:int = cursor.mouseX;
var dy:int = ;
cursor.x = dx;
cursor.y = cursor.mouseY;
}
}
Ce que je veux accomplir est de faire que le curseur MC encore « suivre » le curseur est quand l'extérieur du conteneur MC, mais ne peut pas échapper à partir de cela.
Un vieux script AS2 qui font cela, mais je ne suis pas sûr de savoir comment convertir:
onClipEvent (mouseMove) {
tX = _parent._xmouse;
// tX/tY are 'target' X/Y.
tY = _parent._ymouse;
if (_parent.constraintzone.hittest(tX, tY, true)) {
_x = tX;
_y = tY;
} else {
// and now the hurting begins
// get XY of center of constraint zone
cX = _parent.constraintzone._x;
// cX/cY are 'constrained' X/Y,
cY = _parent.constraintzone._y;
// found somewhere inside the constraint zone.
accuracy = 1;
// smaller = more accurate.
do {
dX = (tX-cX)/2;
// dX/dY are deltas to the midpoint between
dY = (tY-cY)/2;
// target XY and constrained XY.
if (_parent.constraintzone.hittest((tX-dX), (tY-dY), true)) {
cX += dX;
// midpoint is in; step out towards mouse.
cY += dY;
} else {
tX -= dX;
// midpoint is out; step in towards center.
tY -= dY;
}
// loop end.
// (dD > .5) is more accurate, (dX > 10) is less.
} while ((Math.abs(dX)>accuracy) || (Math.abs(dY)>accuracy));
_x = tX;
// we're done, set the final position.
_y = tY;
}
}
Cela fonctionne, mais j'ai changé container.x + (container.width/2) pour (container.x + container.width)/2. Savez-vous s'il existe un moyen d'avoir deux de ces objets? J'ai essayé en faisant une copie du MC et une copie du script avec différentes variables, mais pour une raison quelconque, celle que je mets sur le bon bordel. – peroyomas
Je l'ai changé à container.x + container.width/4 et fonctionne bien dans tous mes cas. – peroyomas