Создание пользовательского компонента с рисунком для мобильного телефона Flex Hero - PullRequest
0 голосов
/ 30 декабря 2010

Я пытаюсь создать пользовательский компонент, который отображает красный прямоугольник посередине со следующим проектом Flex Mobile для Android (в Flash Builder 4.5 Burrito) -

MyComp.mxml (без ошибок):

<?xml version="1.0" encoding="utf-8"?>
<components:MobileApplication 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:components="spark.components.*" 
    firstView="views.MyCompHome">
</components:MobileApplication>

views \ MyCompHome.mxml (без ошибок):

<?xml version="1.0" encoding="utf-8"?>
<components:View 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:components="spark.components.*"
    xmlns:comps="comps.*"
    title="My Component">

    <comps:MyRect width="100%" height="100%"/>

</components:View>

И проблемный comps \ MyRect.mxml (имеет 1 ошибку компиляции):

<?xml version="1.0" encoding="utf-8"?>
<mx:UIComponent 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    width="100%" height="100%">

    <mx:Script>
        <![CDATA[
            private var rect:Shape = new Shape();

            override protected function createChildren():void {
                super.createChildren();
                trace('createChildren');

                rect.graphics.beginFill(0xFF0000);
                rect.graphics.drawRect(0, 0, 20, 20);
                addChild(rect);
            }

            override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
                super.updateDisplayList(unscaledWidth, unscaledHeight);
                trace('updateDisplayList(' + unscaledWidth + ', ' + unscaledHeight + ')');

                rect.x = unscaledWidth / 2;
                rect.y = unscaledHeight / 2;
            }
        ]]>
    </mx:Script>
</mx:UIComponent>

Ошибка компиляции:

Description Resource    Path    Location    Type
Could not resolve <mx:UIComponent> to a component implementation.   
MyRect.mxml /MyComp/src/comps   line 4  Flex Problem

, хотя я добавил c: \ Program Files \ Adobe \ Adobe Flash Builder Burrito \ sdks \ 4.5.0 \ frameworks \ libs \ mx \ mx.swc в путь сборки Flex (нажав Кнопка «Добавить SWC» в диалоге свойств проекта).

1 Ответ

1 голос
/ 30 декабря 2010

Я не думаю, что UIComponent доступен для использования в MXML.Попробуйте изменить MyRect.mxml на класс ActionScript (MyRect.as), расширяющий UIComponent.

Редактировать: я ошибся, он доступен для использования в MXML.Есть ли причина, по которой вы не используете новейшие пространства имен в своем компоненте?Кажется, это работает для меня:

<mx:UIComponent xmlns:fx="http://ns.adobe.com/mxml/2009" 
            xmlns:s="library://ns.adobe.com/flex/spark" 
            xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
    <![CDATA[
        private var rect:Shape = new Shape();

       ...
...