Как получить две точки линии в AS3? - PullRequest
1 голос
/ 15 октября 2011

У меня есть компонент (ссылка на класс Test), который содержит одну строку, и я поставил одну точку этой линии на (0, 0).

Затем перетащите его во Flash (fla) и получите Shape в AS3, например:

// in Test.as
// assume that the movie clip only contain one line.
var line:Shape = Shape(getChildAt(0));

И я могу получить одну точку этой линии, которая равна x и y от var line. Но как получить другую точку этой линии?

Edit: Не обращайте внимания на приведенные выше компоненты, здесь есть еще один вопрос, но я думаю, что он почти такой же, как и вопрос выше:

Нарисуйте линию от (0, 0) до (10, 10) и нарисуйте еще одну линию от (10, 0) до (0, 10), как получить эти линии двухточечной формы в AS3?

Если я получу доступ к ним как Shape, то получу две одинаковые фигуры с одинаковыми значениями x, y, width и height. Есть ли у AS3 способ доступа к линии как линии REAL , а не просто формы? или есть ли способ, которым я могу вычислить это?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2011

У меня есть хороший хитрый способ сделать это в конце концов.

Вот и мы:

  1. создать символ и нарисовать линию от начальной точки (0, 0) до (x, 0)
  2. свяжите этот символ с вашим исходным кодом, назовем Line.
  3. перетащите этот символ на сцену и поверните, масштабируйте его, если необходимо.
  4. в коде Line:

    var v:Point = new Point(getBounds(this).right, 0);
    v = localToGlobal(v);
    

    тогда (x, y) и (v.x, v.y) могут представлять эту строку.

0 голосов
/ 17 октября 2011

Класс Shape в AS3 не предназначен для того, чтобы содержать точки, составляющие форму. Скорее, это самый простой экранный объект, который вы можете создать, который имеет графический объект (без отправки событий мыши, не может содержать экранные объекты и т. Д.). Его имя часто создает впечатление, что его больше, но это не так. Все, что представляется вашими вызовами отрисовки, недоступно из фигуры ... или вообще из любого экранного объекта в AS3.

Ширина и высота x и y - это только свойства экранных объектов, которые основаны на его границах. Если вы хотите представить отдельные точки, вам придется создать свою собственную структуру точек, которая в конечном итоге привыкает к вызовам отрисовки, визуализирующим ее позже.

, если вы в конечном итоге сохраняете точки, а затем заставляете каждую фигуру рисовать их, и хотите затем иметь возможность масштабировать или преобразовывать отдельные фигуры и хотите, чтобы точки находились в координатном пространстве, отличном от этой локальной фигуры, в LocalToGlobal объекта DisplayObject и globalToLocal может быть вам полезен.

var local:Point = new Point(10, 10);
var global:Point = someShape.localToGlobal(localPoint);
var inNewCoord:Point = parentContainer.globalToLocal(globalPoint)

Если вам действительно нужно найти эти векторные данные ... вы можете проверить это сообщение: http://wahlers.com.br/claus/blog/hacking-swf-1-shapes-in-flash/

однако это включает в себя фактический анализ байтовых данных SWF.

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