Korchy (korchy) wrote,
Korchy
korchy

concatenatedmatrix не единичная

Простейший пример, который показывает, что concatenatedmatrix у спрайта, который не имеет parent'а, не является единичной:

package Tmp {
   import flash.display.Sprite;
   public class Tmp extends Sprite {
      private var a:Sprite;
         public function Tmp() {
           a = new Sprite();
           trace(transform.matrix.toString());
           trace(transform.concatenatedMatrix.toString());
           trace(a.transform.matrix.toString());
           trace(a.transform.concatenatedMatrix.toString());
      }
   }
}

(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=5, b=0, c=0, d=5, tx=0, ty=0)

Матрица приобретает нормальное значение про добавлении спрайта в сцену:

package Tmp {
   import flash.display.Sprite;
   public class Tmp extends Sprite {
      private var a:Sprite;
         public function Tmp() {
           a = new Sprite();
           addChild(a);
           trace(transform.matrix.toString());
           trace(transform.concatenatedMatrix.toString());
           trace(a.transform.matrix.toString());
           trace(a.transform.concatenatedMatrix.toString());
      }
   }
}

(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=1, b=0, c=0, d=1, tx=0, ty=0)

Хотя этот момент описан в баг-репорте Adobe, он не является очевидным и способен доставить определенные трудности при отладке.

Поэтому, если в проекте используются трансформации объектов с помощью матричных преобразований, необходимо соблюдать правило: никаких трансформаций до включения спрайта в сцену.
Tags: actionscript 3.0, progr, интерпланети
Subscribe

  • Сервер B3D Interplanety в discord

    Сервер B3D Interplanety в Discord. Для обсуждения вопросов по Blender, его API, разработки скриптов и аддонов. Вопросы, не относящиеся…

  • Аддон Blender "Select-UP" v. 1.2.0.

    Обновление аддона "Select-UP" до версии 1.2.0. Добавлено выделение в зависимости от парентинга объектов Читать дальше:…

  • Оператор для скрытия объекта во всех сценах

    Для того, чтобы скрыть объект в окне 3D Viewport только для текущей сцены мы все пользуемся оператором object.hide_view_set, вызов которого…

Comments for this post were disabled by the author