Flex ArgumentError: Ошибка № 2015: недопустимые данные BitmapData - PullRequest
0 голосов
/ 21 сентября 2011

Нет проблем, когда я выполнил проект Flex с Flex SDK 4.0 или 4.1. Но когда я переключаюсь на SDK 4.5 (поскольку наша группа начинает использовать Flash Builder 4.5), я получаю ошибку при открытии окна (всплывающее окно виджета). Я искал в Интернете несколько дней, но до сих пор не понимаю, что вызвало проблему.

Пожалуйста, помогите.

Вот сообщение об ошибке:

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>

Любая идея. Пожалуйста помоги.

1 Ответ

1 голос
/ 22 сентября 2011

Видя из трассировки стека, эффект кроссфейдера, похоже, является проблемой.Попробуйте вместо этого:

<s:Group id="holder">
    <s:BitmapImage source="@Embed('../../assets/images/GenericRefresh16.png')"
                   visible.over="false" />
    <s:BitmapImage source="@Embed('../../assets/images/GenericRefresh16_active.png')"
                   visible.over="true" />
</s:Group>

<s:transitions>
    <s:Transition autoReverse="true">
        <s:CrossFade target="{holder}"/>
    </s:Transition>
</s:transitions>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...