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);