Расширьте компонент и переопределите метод layoutChrome, чтобы изменить положение titleIcon.
Примерно так:
override protected function layoutChrome(unscaledWidth:Number,
unscaledHeight:Number):void{
super.layoutChrone(unscaledWidth,unscaledHeight);
if (titleIconObject)
{
titleIconObject.move((unscaledWidth-titleIconObject.width)/2,(unscaledHeight-titleIconObject.height)/2);
}
}
Я, в основном, беру unscaledWidth компонента, вычитая ширину titleIconObject, а затем разрезаю это значение пополам, чтобы получить позицию X компонента.
Тогда я использую тот же подход для высоты.
Поскольку titleIconObject позиционируется с использованием аналогичного подхода, я сомневаюсь, что есть стили, которые будут влиять на позиционирование. * * 1010
Проблема, с которой вы столкнулись при попытке, заключается в том, что titleIconObject помещается в пользовательское пространство имен mx_internal. Это немного чёрной магии со стороны команды Flex. Но чтобы получить доступ к свойству в этом пользовательском пространстве имен, вы должны импортировать пространство имен и использовать его. Этот обновленный код должен работать:
package com.mysite.components
{
import mx.containers.Panel;
import mx.core.mx_internal;
use namespace mx_internal;
public class CenterTitleIconPanel extends Panel
{
override protected function layoutChrome(unscaledWidth:Number, unscaledHeight:Number):void {
super.layoutChrome(unscaledWidth,unscaledHeight);
if (titleIconObject)
{
titleIconObject.move((unscaledWidth-titleIconObject.width)/2,(unscaledHeight-titleIconObject.height)/2);
}
}
public function CenterTitleIconPanel()
{
super();
}
}
}
mx_internal - это то место, где все, что Flex Team не хочет документировать, отправляется жить (или умирать).