0
當我使用Flex SDK 4.0或4.1編譯Flex項目時,沒有任何問題。但是當我切換到SDK 4.5(因爲我們的團隊開始使用Flash Builder 4.5),我在打開一個窗口(彈出一個窗口小部件窗口)時出錯。我在網上搜索了幾天,但仍然不知道是什麼導致了這個問題。Flex ArgumentError:Error#2015:Invalid BitmapData
請幫忙。
以下是錯誤消息:
ArgumentError: Error #2015: Invalid BitmapData.
at flash.display::BitmapData/ctor()
at flash.display::BitmapData()
at spark.effects.supportClasses::AnimateTransitionShaderInstance/play()
at spark.effects.supportClasses::AnimateInstance/startEffect()
at mx.effects::Effect/play()
at mx.core::UIComponent/commitCurrentState()
at mx.core::UIComponent/commitProperties()
at spark.components.supportClasses::GroupBase/commitProperties()
at spark.components::Group/commitProperties()
at mx.core::UIComponent/validateProperties()
at spark.components::Group/validateProperties()
at mx.managers::LayoutManager/validateProperties()
at mx.managers::LayoutManager/doPhasedInstantiation()
at mx.managers::LayoutManager/doPhasedInstantiationCallback()
這裏是MXML:
<?xml version="1.0" encoding="utf-8"?>
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<!-- host component -->
<fx:Metadata>
[HostComponent("widgets.BatchGeocoder.components.AddressMapper")]
</fx:Metadata>
<!-- SkinParts
name=ddlCityField, type=spark.components.DropDownList, required=true
name=ddlCountryField, type=spark.components.DropDownList, required=true
name=ddlAddressField, type=spark.components.DropDownList, required=true
name=ddlStateField, type=spark.components.DropDownList, required=true
name=ddlZipField, type=spark.components.DropDownList, required=true
name=btnSubmit, type=spark.components.Button, required=true
-->
<s:layout>
<s:VerticalLayout gap="5"
horizontalAlign="center" />
</s:layout>
<s:Group width="100%"
height="100%">
<s:Label x="5"
y="10"
text="Address: " />
<s:DropDownList x="100"
y="5"
id="ddlAddressField"/>
<s:Button x="250"
y="5"
label="x"
fontSize="4"
width="22"
height="22"
toolTip="Reset Address Field"
skinClass="widgets.BatchGeocoder.components.skins.RefreshButtonSkin"
click="ddlAddressField.selectedIndex = -1" />
<s:Label x="5"
y="40"
text="City: " />
<s:DropDownList x="100"
y="35"
id="ddlCityField"/>
<s:Button x="250"
y="35"
label="x"
fontSize="4"
width="22"
height="22"
toolTip="Reset City Field"
skinClass="widgets.BatchGeocoder.components.skins.RefreshButtonSkin"
click="ddlCityField.selectedIndex = -1"/>
<s:Label x="5"
y="70"
text="State: " />
<s:DropDownList x="100"
y="65"
id="ddlStateField"/>
<s:Button x="250"
y="65"
label="x"
fontSize="4"
width="22"
height="22"
toolTip="Reset State Field"
skinClass="widgets.BatchGeocoder.components.skins.RefreshButtonSkin"
click="ddlStateField.selectedIndex = -1" />
<s:Label x="5"
y="100"
text="Zip: " />
<s:DropDownList x="100"
y="95"
id="ddlZipField"/>
<s:Button x="250"
y="95"
label="x"
fontSize="4"
width="22"
height="22"
toolTip="Reset Zip Code Field"
skinClass="widgets.BatchGeocoder.components.skins.RefreshButtonSkin"
click="ddlZipField.selectedIndex = -1" />
<s:Label x="5"
y="130"
text="Country: " />
<s:DropDownList x="100"
y="125"
id="ddlCountryField"/>
<s:Button x="250"
y="125"
label="x"
fontSize="4"
width="22"
height="22"
toolTip="Reset Country Field"
skinClass="widgets.BatchGeocoder.components.skins.RefreshButtonSkin"
click="ddlCountryField.selectedIndex = -1" />
<s:Label x="5"
y="160"
text="Label: " />
<s:DropDownList x="100"
y="155"
id="ddlLabelField"/>
<s:Button x="250"
y="155"
label="x"
fontSize="4"
width="22"
height="22"
toolTip="Reset Label Field"
skinClass="widgets.BatchGeocoder.components.skins.RefreshButtonSkin"
click="ddlLabelField.selectedIndex = -1" />
</s:Group>
<s:Button id="btnSubmit"
label="Done" />
</s:Skin>
-------------------- ------------------------- 謝謝。我有皮膚。問題在於它與SDK 4.1協同工作的原因,而不是SDK 4.5。 這裏是皮膚的定義:
<?xml version="1.0" encoding="utf-8"?>
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<!-- host component -->
<fx:Metadata>
[HostComponent("spark.components.Button")]
</fx:Metadata>
<!-- states -->
<s:states>
<s:State name="disabled" />
<s:State name="down" />
<s:State name="over" />
<s:State name="up" />
</s:states>
<!-- SkinParts
name=labelDisplay, type=spark.components.supportClasses.TextBase, required=false
-->
<s:Group id="holder">
<s:BitmapImage source="@Embed('../../assets/images/GenericRefresh16.png')"
source.over="@Embed('../../assets/images/GenericRefresh16_active.png')" />
</s:Group>
<s:transitions>
<s:Transition>
<s:CrossFade target="{holder}" />
</s:Transition>
</s:transitions>
</s:Skin>
感謝。不幸的是,它不起作用。 但是你是對的,交叉淡入淡出效果導致了這個問題。我刪除了下面的代碼片段,它的工作原理。
<s:transitions>
<s:Transition autoReverse="true">
<s:CrossFade target="{holder}"/>
</s:Transition>
</s:transitions>
任何想法。請幫忙。
你的RefreshButton皮膚中有圖像嗎?如果是這樣,我認爲皮膚代碼可能更有用 – Exort
**我只允許將評論添加到我的文章。我在原帖中添加了代碼。 – Alex