У меня есть объект 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
Это также очевидно, что мувиклип позиционируется, но почему? Откуда этот дополнительный перевод?
Aha! Я только заметил, что родительский объект имеет масштабное преобразование (через clip.parent.transform.concatenatedMatrix), установленное в значение, которое при умножении на значение tx/ty клипа выдает значение в конкатенированной матрице. Теперь, как установить весовую матрицу на 1? –