Apache flex 我在主机组件上设置了皮肤类,但它给出了空点异常

Apache flex 我在主机组件上设置了皮肤类,但它给出了空点异常,apache-flex,Apache Flex,[HostComponent(“com.directv.mpl.player.chrome.widgets.MPLWidgetContainer”)] 0){ 这个[“volChip”+chipIndex].alpha=1;chipIndex--; } } } } 受保护函数volChip\u clickHandler(芯片索引:编号):无效 { var evt:mplsiderent=新的mplsiderent(mplsiderent.SLIDER\u CHANGE); evt.chipInd


[HostComponent(“com.directv.mpl.player.chrome.widgets.MPLWidgetContainer”)]
0){
这个[“volChip”+chipIndex].alpha=1;chipIndex--;
}
}
}
}
受保护函数volChip\u clickHandler(芯片索引:编号):无效
{
var evt:mplsiderent=新的mplsiderent(mplsiderent.SLIDER\u CHANGE);
evt.chipIndex=chipIndex;
本次调度事件(evt);
}
受保护函数mplbasewidgetskin1\u creationCompleteHandler(事件:FlexEvent):无效
{
this.updateView=updateEvolumeChips;
}
]]>        
TypeError:错误#1009:无法访问空对象引用的属性或方法。 位于spark.components.supportClasses::SkinnableComponent/commitProperties()[E:\dev\4.x\frameworks\projects\spark\src\spark\components\supportClasses\SkinnableComponent.as:427] 在com.directv.mpl.player.chrome.widgets::MPLWidgetContainer/commitProperties()[/Users/kodalasha/Documents/Adobe Flash Builder 4/\u workspace/MediaPlayerLibrary/includes/core/mplCoreSkingUpdateInclude.as:178] 位于mx.core::UIComponent/validateProperties()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\UIComponent.as:7933] 位于mx.managers::LayoutManager/validateProperties()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:572] 位于mx.managers::LayoutManager/dophasedinstation()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:730]
在mx.managers::LayoutManager/dophasedinstationcallback()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1072]

这些代码都没有实际显示主机组件或设置皮肤类的位置

在spark体系结构中,类由两个类组成;一个是组件类(也称为主机组件),另一个是皮肤类。你只给我们看了你的皮肤课

在组件类中的某个地方(根据您提供的代码,类名为com.directv.mpl.player.chrome.widgets.MPLWidgetContainer),您将希望使用skinClass样式为该类提供一个外观。大概是这样的:

<!--

    ADOBE SYSTEMS INCORPORATED
    Copyright 2008 Adobe Systems Incorporated
    All Rights Reserved.

    NOTICE: Adobe permits you to use, modify, and distribute this file
    in accordance with the terms of the license agreement accompanying it.

-->

<!--- The default skin class for a Spark SkinnableContainer container.  

     @see spark.components.SkinnableContainer

      @langversion 3.0
      @playerversion Flash 10
      @playerversion AIR 1.5
      @productversion Flex 4
-->
<skins:MPLBaseWidgetContainerSkin xmlns:skins="com.directv.mpl.player.chrome.widgets.skins.*" xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
                                  xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabled="0.5" minWidth="9" minHeight="9" xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="mplbasewidgetskin1_creationCompleteHandler(event)" xmlns:widgets="com.directv.mpl.player.chrome.widgets.*">
    <fx:Metadata>[HostComponent("com.directv.mpl.player.chrome.widgets.MPLWidgetContainer")]</fx:Metadata>

    <fx:Script fb:purpose="styling">
        <![CDATA[         
            import com.directv.mpl.player.chrome.widgets.MPLStepSliderWidget;
            import com.directv.mpl.player.chrome.widgets.events.MPLSliderEvent;
            import com.directv.mpl.player.metadata.MPLVolumeMetadata;

            import mx.events.FlexEvent;
            /**
             *  @private
             */

            private function updateVolumeChips():void{
                if(metadata){
                    volChip1.alpha = volChip2.alpha = volChip3.alpha = volChip4.alpha = volChip5.alpha = volChip6.alpha = volChip7.alpha = 0;
                    if(!MPLVolumeMetadata(metadata).mute){      
                        var chipIndex:Number = Math.round(MPLVolumeMetadata(metadata).volume / MPLStepSliderWidget.VOLUME_STEP_SIZE);
                        while(chipIndex > 0){
                            this["volChip"+chipIndex].alpha = 1;chipIndex--;
                        }
                    }
                }
            }

            protected function volChip_clickHandler(chipIndex:Number):void
            {
                var evt:MPLSliderEvent = new MPLSliderEvent(MPLSliderEvent.SLIDER_CHANGE);
                evt.chipIndex = chipIndex;
                this.dispatchEvent(evt);
            }


            protected function mplbasewidgetskin1_creationCompleteHandler(event:FlexEvent):void
            {
                this.updateView = updateVolumeChips;
            }

        ]]>        
    </fx:Script>
    <skins:states>
        <s:State name="normal" />
        <s:State name="disabled" />
    </skins:states>


    <widgets:MPLSparkButton id="volumeTrack" width="100%" height="100%"/>
    <s:HGroup gap="1" x="4" y="9">
        <widgets:MPLSparkButton  width="100%" height="100%" id="volChip1" click="volChip_clickHandler(1)"/>
        <widgets:MPLSparkButton  width="100%" height="100%" id="volChip2" click="volChip_clickHandler(2)"/>
        <widgets:MPLSparkButton  width="100%" height="100%" id="volChip3" click="volChip_clickHandler(3)"/>
        <widgets:MPLSparkButton  width="100%" height="100%" id="volChip4" click="volChip_clickHandler(4)"/>
        <widgets:MPLSparkButton  width="100%" height="100%" id="volChip5" click="volChip_clickHandler(5)"/>
        <widgets:MPLSparkButton  width="100%" height="100%" id="volChip6" click="volChip_clickHandler(6)"/>
        <widgets:MPLSparkButton  width="100%" height="100%" id="volChip7" click="volChip_clickHandler(7)"/>
    </s:HGroup>

</skins:MPLBaseWidgetContainerSkin>

我通常会在构造函数中添加这段代码——对于默认皮肤;虽然我相信也可以通过CSS设置

如果您使用的是Flash Builder,只需在调试模式下运行应用程序,当出现异常时,应用程序就会停止运行。然后,您可以通过stacktrace检查变量值。
this.setStyle('skinClass',com.directv.mpl.player.chrome.widgets.MPLBaseWidgetContainerSkin);