【发布时间】:2011-02-12 03:18:14
【问题描述】:
我正在(慢慢地)学习 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";
}
}
}
我遇到的问题是各种 SkinPart 的构造函数中的 NULL REFERENCES,因为它们尚未创建。我试图找出访问它们以分配其 .text 值的最佳时间。我知道我可以覆盖 partAdded() 并在添加每个部分时添加 .text 值,但我宁愿只监听一些在它们都可用时调度的魔术事件。
我不确定这是否重要,但 accountName、accountNumber 变量是通过在主机组件上使用带有 dataProvider 的转发器来分配的。我不确定这是否也与 AccountSummary 组件何时可以使用数据有关——这可能还需要等待。我能够成功地使用 FlexEvent.CREATION_COMPLETE 将我所有的 .text 值分配给 SkinParts,但这是正确的事件/最佳实践吗?任何帮助将不胜感激!
【问题讨论】:
标签: apache-flex