2010-03-19 3 views
1

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

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

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

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

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

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

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

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

Единственный ключ у меня есть, что смотреть на:

clip.transform.matrix 

и

clip.transform.concatenatedMatrix 
  • матрицы имеет значение Тх 748 (половина высоты ступени) ти значения 426 (Половина высоты сцены)

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

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

+0

Aha! Я только заметил, что родительский объект имеет масштабное преобразование (через clip.parent.transform.concatenatedMatrix), установленное в значение, которое при умножении на значение tx/ty клипа выдает значение в конкатенированной матрице. Теперь, как установить весовую матрицу на 1? –

ответ

1

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

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

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^