【问题标题】:Flex 4.6 Obtain Reference to Component within <s:Application> SkinFlex 4.6 在 <s:Application> 皮肤中获取对组件的引用
【发布时间】:2012-07-18 00:38:47
【问题描述】:

我正在 Flex 4.6 中构建一个应用程序,它在主 &lt;s:Application&gt; 上使用自定义皮肤。这个皮肤里面有几个组件,我想从主应用程序中访问它们。

我尝试使用this.skin.getChildByName("&lt;name of component within skin&gt;"),但它给了我一个运行时错误。

如何从主应用程序访问皮肤中的组件?

【问题讨论】:

    标签: actionscript-3 flash apache-flex flex4 components


    【解决方案1】:

    如果皮肤的组件没有作为 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);
    

    【讨论】:

      猜你喜欢
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多