Forums Développement Multimédia

Aller au contenu

[AS3] Drag un objet autour d'une cercle

flash drag cercle clip objet move

1 réponse à ce sujet

#1 Smily

    Ceinture Blanche

  • Members
  • Pip
  • 2 messages

Posté 13 October 2014 - 09:37 AM

Bonjour à tous,

J'essaie de faire bouger un objet (ici un petit cercle) autour d'un cercle (contour et fond transparent). Mais je n'y arrive pas du tout. J'ai trouvé des tutoriaux à ce sujet, mais mes connaissances sont trop faibles pour les déchiffrer.

Par exemple ici : http://flashascript....actionscript-3/



// UI container
var dial:Sprite;
// Draggable object. Can be anything. I chose arrow.
var arrow:Sprite;
// circle radius - play with changing this value
var radius:Number = 150;
// calculated angle
var angle:Number = 0;
// convert to radians - do it once to save on processing power
var angleConvert:Number = 180 / Math.PI;
// initiate application
init();
function init():void
{
        makeDial();
        makeArrow();
}
/**
* MouseEvent.MOUSE_MOVE handler.
* @param   e
*/

function onMove(e:MouseEvent):void
{
        // calculate angle between mouse position and the center of dial
        angle = Math.atan2(mouseY - dial.y, mouseX - dial.x);
        // reposition arrow according to angle
        arrow.x = radius * Math.cos(angle);
        arrow.y = radius * Math.sin(angle);
        // rotate arrow so that it always point outward
        arrow.rotation = angleConvert * angle + 90;
}
/**
* MouseEvent.MOUSE_DOWN handler
* @param   e
*/

function onArrowDown(e:MouseEvent):void
{
        /**
         * MouseEvents listeners are added to STAGE - not arrow.
         * This way event if Mouse is not over arrow - interaction is preserved.
         */

        stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
        stage.addEventListener(MouseEvent.MOUSE_UP, onStageUp);
}
/**
* MouseEvent.MOUSE_UP handler
* @param   e
*/

function onStageUp(e:MouseEvent):void
{
        // by removing listeners we stop interaction.
        stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove);
        stage.removeEventListener(MouseEvent.MOUSE_UP, onStageUp);
}
/**
* Instantiates dial container and draws circle inside it.
*/

function makeDial():void {
        dial = new Sprite();
        var g:Graphics = dial.graphics;
        g.lineStyle(1, 0x004000);
        g.drawCircle(0, 0, radius);
        dial.x = dial.y = radius + 50;
        addChild(dial);
}
/**
* Instantiates arrow, draws triangle and adds arrow to dial display list.
*/

function makeArrow():void {
        arrow = new Sprite();
        // draw triangle
        var g:Graphics = arrow.graphics;
        g.beginFill(0x000080);
        g.moveTo(0, -15);
        g.lineTo(7, 6);
        g.lineTo( -7, 6);
        g.endFill();
        // position arrow on the top of circle
        arrow.y = -radius;
        dial.addChild(arrow);
        // make arrow interactive
        arrow.buttonMode = arrow.useHandCursor = true;
        arrow.addEventListener(MouseEvent.MOUSE_DOWN, onArrowDown);
}
 


Ici, je voudrais en fait que le petit triangle soit mon petit cercle (ici un clip que j'ai crée appelé "curseur") et qu'il bouge autour de mon cercle appelé "cercle" qui soit au milieu de ma page.

Et quand je bouge mon petit cercle "curseur", on peut voir d'autres petits cercles "point" autour de mon cercle "cercle" principal, et à chaque passage sur ces "points" l'utilisateur puisse voir du texte qui va s'afficher.

Si quelqu'un peut m'aider et m'expliquer comment faire ! Merci encore ! :/

#2 Smily

    Ceinture Blanche

  • Members
  • Pip
  • 2 messages

Posté 13 October 2014 - 14:28 PM

En fait, c'est bon j'ai réussi !!


Le seul problème où je n'arrive pas, c'est quand je prends mon "curseur" et que je le pose sur un "point" autour de mon "cercle" principal, je n'arrive pas à afficher un texte différent pour chaque "point"

Des idées ?

Surtout pour la détection du "curseur" sur le "point" même quand l'utilisateur passe sur le "point" ou relâche le "curseur" sur le "point".



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)