SkinParts是一种将事件处理程序和逻辑添加到皮肤中实例化的对象的好方法,远离任何业务代码。但是,我经常发现自己想做相反的事情,并定义将在父mxml文件中的可重用,可换肤容器中使用的部件,这些容器将插入到蒙皮容器中。
当你想要能够定义一个控件和一个可以从皮肤外部插入的不同控件重复使用的皮肤时,最佳做法是什么?
编辑:更好的方法是,我想使用的东西有点像SkinnableContainer,但不限于可以放置内容的一个区域。
答案 0 :(得分:0)
我发现你的问题有点不准确,所以我不完全确定我理解你在寻找什么。但是,我打算回答这个问题。
SkinParts是添加事件的好方法 处理程序和逻辑到一个对象 在皮肤中实例化远离任何业务代码。
我不会说SkinParts允许我们向对象添加事件处理程序或其他逻辑。虽然从开发的角度来看,它似乎是Skin(扩展Skin)和Business Class(Extending SkinnableComponent),以及两个独立的实体;在运行时,他们似乎真的被视为一个单一的实体。
我还没有深入研究实际的框架代码,但从我收集的内容来看,Skin是添加到舞台的实际显示对象,而您的Business类以某种方式合并到它中。如果您查看Flex Hero中引入的ActionScript外观,您会发现它们需要一个hostComponent属性,其类型应该是业务类。我假设这是Flex编译器已经使用HostComponent元数据在Flex 4.0 / 4.1的幕后工作。
但是,我常常想要自己 做相反的事情
与此相反?您希望将事件处理程序添加到皮肤内部的组件中没有理由不能这样做,尽管这不是Adobe在Spark架构中创建组件时推动我们的方向。
如果您想创建自己的“离散包”数据和功能,可以轻松重复使用,您可以这样做。任何Spark组件,Halo组件或非Flex ActionScript类都可以用于轻松实现这些可重用的对象,然后可以在另一个Spark或Halo组件中重用这些对象。
我不完全确定这是否能回答这个问题。但是,如果你想详细说明,我们可以尽力帮助你。