0

私は現在、Flex 3.6 で作成された Adob​​e Flex Air プロジェクトに取り組んでいます。しかし、今では iPad 用のアプリになるはずですが、Flex 4.6 以降、Flash Builder はプロジェクトをアプリとしてのみエクスポートできます。だから私はプロジェクトを 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. 3 つの名前空間すべてを使用することが可能です

 `(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. これら 3 つの名前空間で Flex 4.6 を使用するには、外部ライブラリを参照または追加する必要がありますか?
  2. Flex 3.6 から 4.6 に移行する簡単で一般的な方法はありますか? 3.6 で開発されたとしても、変更を加える必要がありますか、それとも 4.6 で動作する必要がありますか?

その上、私は Flex に比較的慣れていませんが、難しくはないと思います。

前もって感謝します

よろしく、

マックスB

4

2 に答える 2

1

Flex は難しくありませんが、主要なバージョン間での移行は骨の折れる作業であり、経験豊富な開発者が必要になる場合があります。実際には、両方のフレームワーク、それらの違い、およびそれらの違いを修正する方法を知る必要があります。
では、 ...Is there an easy general way for migrating?いいえ (または、妥協する意思がある場合は、後で詳しく説明します)。

名前空間については、3 つすべてを 1 つのアプリケーションで一緒に使用でき、そのために特別なことをする必要はありません。つまり、従来の Web アプリを構築している場合です。モバイル アプリを構築している場合は、古いコンポーネントを含まない他のフレームワーク ライブラリが使用されますmx。その理由は、Spark コンポーネントまたははるかに効率的なモバイル デバイスがまだデスクトップほど強力ではないためです。
つまり、アプリケーション全体を Spark 名前空間に変換する必要があります。ビューがビジネス ロジックから完全に分離されていない場合は、最初から書き直すこともできます。

mxただし、モバイル用にコンパイルする場合でも、ライブラリを強制的に含めることができます。しかし、これにはパフォーマンスのコストがかかります。

とはいえ、これまで私が言ったのは技術的なレベルだけでした。UX の観点からは、大画面用に設計されたアプリケーションが小さな画面で快適に使用できるとは期待できません。ほとんどの場合、これらの「単純な」変換は完全な失敗です。

于 2013-01-31T15:12:39.660 に答える