我正在 Flex 4.6 中构建一个应用程序,它在主<s:Application>
. 这个皮肤里面有几个组件,我想从主应用程序访问它们。
我尝试使用this.skin.getChildByName("<name of component within skin>")
,但它给了我一个运行时错误。
如何从主应用程序访问皮肤中的组件?
我正在 Flex 4.6 中构建一个应用程序,它在主<s:Application>
. 这个皮肤里面有几个组件,我想从主应用程序访问它们。
我尝试使用this.skin.getChildByName("<name of component within skin>")
,但它给了我一个运行时错误。
如何从主应用程序访问皮肤中的组件?
如果皮肤的组件没有作为 skinPart 公开,那么以这种方式访问它就违反了封装规则,并且通常会破坏将业务逻辑与视觉显示分开的 Flex Skinning Spark 模型的好处。
也就是说,您可以使用以下方式访问皮肤:
// for a SparkSkin
var skinAsSparkSkin : SparkSkin = this.skin as SparkSkin;
// for a MobileSkin
var skinAsMobileSkin : MobileSkin = this.skin as MobileSkin;
// for your custom skin type
var skinAsCustomSkin : MyCustomSkin = this.skin as MyCustomSkin;
一旦您可以访问皮肤,您就可以使用以下方式访问皮肤内的公共变量:
trace(skinAsSparkSkin.myVaribleInsideSkin);
对于您在 MXML 皮肤中创建的组件(不是皮肤部件),它们将是公共变量,您可以通过您在 MXML 代码中定义的 ID 访问它们:
在皮肤中:
<s:List id="myList"/>
在组件类中:
trace(skinAsSparkSkin.myList);