Как предотвратить внешний перевод объекта movieclip на сцене в AS3? - PullRequest
1 голос
/ 19 марта 2010

У меня есть объект MovieClip, который экспортируется для ActionScript (AS3) в файл .swc.

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

Если вы вызываете getBounds () для мувиклипа, вы можете получить границы клипа (предположительно из «точки», на которой он выровнен), который выглядит примерно так (слева: -303, сверху: -100, справа: 303 , внизу: 100), вы можете вычесть левое и верхнее значения из клипа x и y:

clip.x -= bounds.left;
clip.y -= bounds.top;

Это похоже на правильное выравнивание клипа на сцене по левому верхнему краю клипа в углу сцены.

Но! Следуя этой логике, кажется, не работает, когда выровняете ее по центру сцены!

clip.x = (stage.stageWidth / 2);
etc...

Это создает сумасшедшую параллельную вселенную, где клип теперь находится в правом нижнем углу сцены.

Единственная подсказка, которую я имею, это то, что я смотрю на:

clip.transform.matrix

и

clip.transform.concatenatedMatrix
  • матрица имеет значение tx 748 (половина высоты ступени), ty значение 426 (половина высоты ступени)

  • concatenatedMatrix имеет значение tx 1699,5 и значение ty 967,75

Это также, очевидно, где размещается мувиклип, но почему? Откуда этот дополнительный перевод?

1 Ответ

1 голос
/ 19 марта 2010

Я считаю, что решил проблему.

Кажется, что когда сцена не настроена на определенные размеры, масштаб элементов (или этот конкретный векторный объект в моем случае) на сцене относительно некоторого предустановленного масштаба / измерений (источником которого я являюсь не уверен - при некотором тестировании похоже, что на него влияют соотношение и размеры сцены).

Увеличение размера сцены увеличивает это значение масштабирования, которое через некоторый набор конкатенаций матриц приводит к масштабированию мувиклипа и , переведенным с тем же процентом (как и сцена), даже если вы явно указали установите значения x / y / width / height.

(Примечание: не только динамическое изменение размера. Изменение размера окна, закрытие и повторное открытие окна с таким новым размером приводит к тому же поведению)

Я подозреваю, что это происходит только с векторными объектами?

В любом случае, исправление состоит в том, чтобы установить сцену в явную ширину и высоту. Затем для перевода и масштабирования объекта используется родительская матрица идентификаторов, и все работает так, как вы ожидаете.

...