как получить конечную точку линии, нарисованной с помощью lineTo во flash as3 - PullRequest
0 голосов
/ 10 мая 2011

Я нарисовал серию линий, используя команду flash's graphics.lineTo, и поместил их в массив, к которому я буду обращаться позже. Основываясь на определенных взаимодействиях с пользователем, клипы, которые содержат эти линии, могут быть смещены вправо, в результате чего линии перемещаются вместе с ними, больше не соединяясь с точкой, к которой они изначально подключены. Поэтому мне нужно расширить строки на величину смещения их родительского клипа (я назвал это incVal). Итак, что мне нужно сделать, это найти точку, в которой каждая из этих линий закончилась, и провести из этой точки влево с помощью incVal. Как мне получить эту конечную точку линии?

Это мой код:

Чтобы нарисовать линию и добавить ее как в клип, так и в массив для дальнейшего использования:

line.graphics.lineTo(localPoint.x,localPoint.y-10);
membersRef.addChild(line);
parallelArr.push(line);

Чтобы ссылаться на строку позже, просматривая массив:

function extendParallels(incVal):void {
    for (var i=0;i<parallelArr.length;i++){
        trace (parallelArr[i]);
//need to extend line with code here.
    }
}

Ответы [ 2 ]

2 голосов
/ 10 мая 2011

Вы не можете получить графические конечные точки точно из спрайта простым способом. Вы должны сохранить конечную точку в переменной.

var p:Point = new Point(localPoint.x, localPoint.y-10); // flash.geom.Point

А в parallelArr вы можете сохранить объект, который содержит ссылку на эту точку и на объект DisplayObject, на котором нарисована ваша линия.

1 голос
/ 10 мая 2011

Измените свою логику немного, и вы будете настроены. Сохраните точку в вашем массиве parallelArr, для справки позже.

Примерно так:

            //during dynaminc population
            addLine(localPoint.x, localPoint.y);

            private function addLine(pX:int, pY:int):void
            {
                var nPoint:Point = new Point(pX, pY);
                line.graphics.lineTo(nPoint.x, nPoint.y-10);
                membersRef.addChild(line);
                parallelArr.push(nPoint);
            }

Это дает вам доступ к состоянию, которое создало линию, и позволяет избежать попыток собрать ее из самой линии. Это было бы особенно сложно, если бы к строке был применен какой-либо фильтр, поскольку flash немедленно отображает его как растровое изображение ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...