Я (медленно) изучаю Flex 4 и работаю над созданием скинов для пользовательского компонента, расширяющего SkinnableComponent. Компонент полностью в ActionScript и по сути выглядит так:
package components
{
import spark.components.supportClasses.SkinnableComponent
[SkinState("normal")]
[SkinState("over")]
[SkinState("selected")]
public class AccountSummary extends SkinnableComponent
{
[Bindable]
public var itemIndex:int = 0;
[Bindable]
public var accountName:String = "";
[Bindable]
public var accountNumber:String = "";
[Bindable]
public var currentBalance:String = "";
[SkinPart(required="true")]
public var lblAccountName:Label;
[SkinPart(required="true")]
public var lblCurrentBalance:Label;
[SkinPart(required="true")]
public var lblAccountNumber:Label;
[SkinPart(required="true")]
public var lblLastUpdated:Label;
public function AccountSummary()
{
super();
lblAccountName.text = accountName;
lblCurrentBalance.text = currentBalance;
lblAccountNumber.text = "Acc: " + accountNumber;
lblLastUpdated.text = "Last Updated: ";
}
override protected function getCurrentSkinState():String
{
return "normal";
}
}
}
У меня проблема с NULL REFERENCES в конструкторе для различных SkinParts, потому что они еще не созданы. Я пытаюсь выяснить, когда лучше всего обращаться к ним, чтобы назначить их значения .text. Я знаю, что могу переопределить partAdded () и добавить значение .text при добавлении каждой части, но я бы предпочел просто прослушать какое-то волшебное событие, которое отправляется, когда они все доступны.
Я не уверен, имеет ли это значение, но переменные accountName, accountNumber назначаются с помощью повторителя с dataProvider на хост-компоненте. Я не уверен, имеет ли это отношение к тому, когда данные становятся доступны компоненту AccountSummary - от которого, возможно, также придется ждать. Мне удалось успешно использовать FlexEvent.CREATION_COMPLETE для назначения всех моих значений .text для SkinParts, но является ли это правильным событием / наилучшей практикой? Любая помощь будет принята с благодарностью!