背景
Flex4.5およびAIR2.6で構築されたAIRアプリをFlex4.6およびAIR3.3に更新中です。これは、ネイティブJSONクラスを利用し、AIR3.4とActionscriptワーカーの準備をするために行っています。どちらも使用する予定です。PureMVC2.0.4も使用しています。
実際の更新プロセスはうまくいきました。Flex 4.6 SDKをダウンロードし、その上にAIR3.3SDKをオーバーレイしました。ここまでは順調ですね。as3corelibでJSONクラスを使用していたため、アプリからそのクラスへの参照を削除して、いくつかの変更を加える必要がありました。そのスムーズな航海は別として。コードがうまくコンパイルされたので、アプリの起動に進みました。
問題
これは物事がバラバラになるところです。
アプリが「ウェルカム」ビューを起動すると(これは基本的に、「ファイルを開く」、「新しいファイル」などのボタンと、Webサービスから取得したニュースフィードなどのボタンがあるランディングです)が表示されません。背景画像は表示されますが、UIが表示されません。スクリーンキャップの例を次に示します。
以前(ウェルカムビューの動作中の4.5バージョン)
後(ウェルカムビューの壊れた4.6バージョン。これはビューの背景画像です。)
Flash Builderデバッガーで大量のブレークポイントを使用して起動プロセスをステップ実行しても、明らかに問題があることはわかりません。他のUI要素もありません。例:このタブバーにはボタンがありません
以前(動作中の4.5バージョン)
後(壊れた4.6バージョン)
ここで何が起こっているのかを確認するために、私はできる限りアプリで遊んでいます(ウェルカムUIがなくなったため、これはかなり難しいです)。アプリケーションを最小化してから復元すると、アプリがハングすることがわかりました。 Windowsがアプリのタイトルバーに「(応答なし)」ビットを追加するところまで、UIはちょっと-ちょっと-ほとんど機能して正常に再開します。いくつかのサンプル画像:
復元後のウェルカムビュー(右に大きく離れている水平方向のルールに注意してください)
復元後のTabBar(このコンテンツはレイアウトルールを完全に無視しています。さらに、実際には左にスクロールしています-そうです、どういうわけか脚が伸びて、それ自体で画面から移動しているだけです。トゥイーン/アニメーションコードが添付されていませんでしたこのビュー)
これはすべて、FlashBuilder4.6を搭載したWindows7x64で発生しています。
質問
ここで一体何が起こっているのですか?なぜ私のUIはこのように消えてしまうのでしょうか?
「ああ、このコンパイラオプションを追加するだけ」やBAMのような基本的なものが欠けているような気がします。物事は修正されます。私は確かに、このアップグレードで私のアプリが完全に壊れるべきだとは感じていません。
以前のバージョンのFlex/AIRからFlex4.6/ AIR 3.xにアップグレードする際に、同様の問題が発生したことはありますか?問題をどのように解決しましたか?
この問題を引き起こしているのは私のカスタムスキンでしょうか?なぜそれが起こるのでしょうか?スキンのトピックでは、これは同様の質問のようです。
アップデート
私はこれを避けたいと思っていましたが、これでは実際にはどこにも到達していなかったので、アプリを適切なレベルの機能に戻し、そこから作業できるようになるまで、テーマと外部SWCを引き出し始めることにしました。私はテーマから始めましたが、問題はテーマにありませんでしたが、正しい方向に向けられました。
私のアプリには、というクラスがありHRule
ます。これは、上記のスクリーンショットの一部にある[ディーラーから開く]ボタンと[ログアウト]ボタンの間の水平方向のルールです。Group
このクラスは、ルールを描画する2つLine
のsが内部にある単純なSparkです。
完全なクラスは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<s:Group
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:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:layout>
<s:VerticalLayout
gap="0">
</s:VerticalLayout>
</s:layout>
<s:Line
xTo="{width}">
<s:stroke>
<s:SolidColorStroke
color="#000000"
alpha="0.4" />
</s:stroke>
</s:Line>
<s:Line
xTo="{width}">
<s:stroke>
<s:SolidColorStroke
color="#ffffff"
alpha="0.15" />
</s:stroke>
</s:Line>
</s:Group>
次に、このクラスを次のように使用します。
<s:VGroup
width="300">
<s:Button
label="Button 1"
percenthWidth="100"/>
<mycomps:HRule
percenthWidth="100"/>
<s:Button
label="Button 2"
percenthWidth="100"/>
</s:VGroup>
Group
基本クラスをからに変更するだけで、すべての問題を修正できますSkinnableContainer
。WinMergeをダウンロードして、Sparkの4.5バージョンGroup
と4.6バージョンで差分を取りましたが、ファイルは同じです。
それで、これは新しい質問を提起します:なぜ4.5と4.6の間で変化の振る舞いをするのでしょうか?Group