Сделать объект привязанным к другому объекту, а затем следовать его пути с помощью чистого ActionScript? - PullRequest
1 голос
/ 22 апреля 2011

Я все еще пытаюсь понять, как сделать объект привязанным к другому объекту, а затем следовать его пути с помощью чистого кода ActionScript (привязать стрелку к кружку, затем круг следует за стрелкой, когда кнопка воспроизведения вудар).

Может кто-нибудь помочь мне с небольшим примером, чтобы я мог обдумать его, любая помощь будет высоко ценится.Я пытаюсь создать приложение, направленное на что-то вроде этого

   http://itunes.apple.com/us/app/basketball-coachs-clipboard/id317785081?mt=8

Моя линия рисования работает, но теперь я знаю, как заставить объект следовать линии, вот как я нарисовал свою линию наУровень.Пожалуйста, не могли бы вы дать мне подсказку, как это сделать.

   function startPencilTool(e:MouseEvent):void
    {

    pencilDraw = new Shape(); 
    board.addChild(pencilDraw); 

    pencilDraw.graphics.moveTo(mouseX, mouseY); 
    pencilDraw.graphics.lineStyle(shapeSize.width);
   board.addEventListener(MouseEvent.MOUSE_MOVE, drawPencilTool); 
   }

 function drawPencilTool(e:MouseEvent):void
 {
 pencilDraw.graphics.lineTo(mouseX, mouseY); /
 }

 function stopPencilTool(e:MouseEvent):void
 {
 board.removeEventListener(MouseEvent.MOUSE_MOVE, drawPencilTool); 
 }

1 Ответ

4 голосов
/ 22 апреля 2011

1-й

Если вы подразумеваете под "следование по своему пути", что объект следует за другим объектом, то просто выполните

obj2.x = obj1.x;
obj2.y = obj1.y;

, чтобы следовать точным координатам.Если вы хотите сделать некоторое расстояние между ними, то

obj2.x = obj1.x + dx;
obj2.y = obj1.y + dy;

выберите dx и dy в соответствии с вашими желаниями.

2nd

Если вы хотите создать приложение,где вы можете «нарисовать стрелку» или «нарисовать путь», а затем объект должен следовать за ней, затем вы можете попытаться сохранить координаты мыши, при этом «нарисовать стрелку», а затем привязать нужный объект к этим координатам.

var coordinates:Array = [];

stage.addEventListener("mouseDown", md);

function md(evt:*):void
{
    //empty the coordinates
    coordinates = [];

    //add listener when mouse is released
    stage.addEventListener("mouseUp", mu);

    //add a listener for enterframe to record the mouse's motion
    addEventListener("enterFrame", recordMouse);
}

function mu(evt:*):void
{
    stage.removeEventListener("mouseUp", mu);
    removeEventListener("enterFrame", recordMouse);

    //snap the object to the drawn line and play it
    addEventListener("enterFrame", playRecording);
}

function recordMouse(evt:*):void
{
    coordinates.push(new Point(stage.mouseX, stage.mouseY));
}

function playRecording(evt:*):void
{
    //snap object to the recorded coordinates
    myObject.x = coordinates[0].x;
    myObject.y = coordinates[0].y;

    //delete first element of array
    coordinates.splice(0, 1);

    //stop playing if there are no more points
    if(coordinates.length == 0) removeEventListener("enterFrame", playRecording);
}

Поместите видеоклип на сцену и назовите его myObject.Затем добавьте код и скомпилируйте swf.

Кроме того, во время «записи» координат вы также можете нарисовать несколько линий.

Измените функцию md следующим образом:

function md(evt:*):void
{
    //empty the coordinates
    coordinates = [];

    //add listener when mouse is released
    stage.addEventListener("mouseUp", mu);

    //add a listener for enterframe to record the mouse's motion
    addEventListener("enterFrame", recordMouse);

    //clear graphics, and initialize line
    with(graphics) clear(), lineStyle(1, 0xff0000), moveTo(stage.mouseX, stage.mouseY);
}

и запишите это.

function recordMouse(evt:*):void
{
    coordinates.push(new Point(stage.mouseX, stage.mouseY));

    //draw the line
    with(graphics) lineTo(stage.mouseX, stage.mouseY);
}

3-й

Если вы хотите следовать предварительно нарисованной линии, то у вас есть несколько вариантов в зависимости от вашей задачи.Но все зависит от того, как именно вы хотите «привязать» свой объект.

...