0

我目前正在开发一个使用 Flex 3.6 创建的 Adob​​e Flex Air 项目!但是现在应该变成了iPad的App,但是Flash Builder从Flex 4.6开始只能将项目导出为App。所以我正在尝试将项目从 Flex 3.6 转换为 4.6,我想这应该很容易做到,但是库和/或命名空间存在一些问题,这让我感到困惑。这就是我的 Main-mxml 的启动方式:

<s:Application xmlns:mx="http://ns.adobe.com/mxml/2009" 
           xmlns:mx="library://ns.adobe.com/flex/mx" 
           xmlns:s="library://ns.adobe.com/flex/spark"
           xmlns:MyComp="*"
           xmlns:local="*"
           xmlns:srv="generated.webservices.*"
           width="1366"
           applicationComplete="init()"
           backgroundGradientColors="[0xffffff,0xffffff]"
           borderColor="#ffffff"
           color="#eaeaea"
           fontSize="14"
           horizontalScrollPolicy="off"
           layout="absolute"
           paddingBottom="0"
           paddingLeft="0"
           paddingRight="0"
           paddingTop="0"
           verticalScrollPolicy="off">

但我得到了错误:

`Attribute "mx" bound to namespace "http://www.w3.org/2000/xmlns/" was already specified for element "s:Application".`

但是如果我删除这条线

`xmlns:mx="library://ns.adobe.com/flex/mx"`

那么我当然不能再使用例如 mx:VBox 并且必须重构整个项目。

我尝试了一些使用 Flex 4.6 的测试示例,例如

<?xml version="1.0"?>
<!-- containers\layouts\BoxSimple.mxml -->
<s:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    xmlns:s="library://ns.adobe.com/flex/spark">

    <mx:Box direction="vertical" 
            borderStyle="solid" 
            paddingTop="10" 
            paddingBottom="10" 
            paddingLeft="10" 
            paddingRight="10">

        <mx:Button id="fname" label="Button 1"/>
        <mx:Button id="lname" label="Button 2"/>
        <mx:Button id="addr1" label="Button 3"/>
        <mx:ComboBox id="state">
            <mx:ArrayList>
                <fx:String>ComboBox 1</fx:String>
            </mx:ArrayList>
        </mx:ComboBox>
    </mx:Box>
</s:Application>

但在这里我得到了错误

    `"Could not resolve <mx:Button> to a component implementation." `and more like this.

现在我的问题是: 1. 可以使用所有三个命名空间

 `(xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    xmlns:s="library://ns.adobe.com/flex/spark")`

对?我在互联网上的几个示例中看到了这一点,所以我认为它必须有效。

  1. 我是否必须引用/添加外部库才能将 Flex 4.6 与这 3 个命名空间一起使用?
  2. 是否有从 Flex 3.6 迁移到 4.6 的简单通用方法?是否有必要进行更改或必须在 4.6 中工作,即使是在 3.6 中开发的?

此外,我对 Flex 比较陌生,尽管我认为这并不难。

提前致谢

问候,

最大 B

4

2 回答 2

2

Max - 要专门回答您的问题,绝对可以在 Flex 4 应用程序中使用 MX 组件。您的示例似乎适用于常规 flex 4.6 项目。您可能需要确保具有正确的库路径设置。

在此处输入图像描述

于 2013-01-31T15:51:48.507 回答
1

Flex 并不难,但在主要版本之间迁移可能会让人头疼,并且可能需要经验更丰富的开发人员。事实是您必须了解这两个框架,它们有什么区别以及如何解决这些区别。
所以Is there an easy general way for migrating?好吧,......不(或者如果你愿意妥协,是的,稍后会详细介绍)。

至于命名空间:您可以在一个应用程序中同时使用这三个命名空间,您无需为此做任何特别的事情。也就是说,如果您正在构建一个传统的 Web 应用程序。如果您正在构建一个移动应用程序,则使用一些其他框架库,这些库不包含该mx时代的组件。原因是 Spark 组件或更高效的移动设备还没有台式机那么强大。
这意味着您必须将整个应用程序转换为 Spark 命名空间。如果你的视图还没有完全脱离业务逻辑,不妨从头开始重写。

但是,您可以强制编译器包含这些mx库,即使在为移动设备编译时也是如此。但这会以性能为代价。

也就是说,到目前为止,我所说的只是技术层面的。从用户体验的角度来看,你不能指望一个为大屏幕设计的应用程序在小屏幕上使用起来很愉快。在大多数情况下,这些“简单”转换完全失败。

于 2013-01-31T15:12:39.660 回答