0

次の問題があります。上司は、ビューを切り替える間の待ち時間なしで、アプリの応答性を大幅に向上させたいと考えています。これは、に基づく「標準」アプリケーションに使用されていましたが、ユーザーが自分で作成したタブの選択に基づいて、破棄され、異なるコンテンツで再作成されたViewNavigator1 つだけでした。Viewビューはデフォルトで切り替えられましたSlideViewTransition。以下で説明するように、わずかに軽量なアプローチで 0.5 秒に短縮されましたが、それでも 0.5 秒は長すぎます。

このアプリは、ユーザーが自分で新しいビューを作成および編集できるタブ付きアプリケーションであるため、タブとそれに対応するタブを作成/編集/削除します。私の現在の実装は、「ビュー」を表示するために使用されるaButtonBarおよび aに基づいています。Groupグループのコンテンツは、選択したタブに基づいて作成されます。コンテンツは、「ビュー」を構築するために必要なすべての情報を格納する XML データに基づいています。当然のことながら、コンポーネントの削除と作成には少し時間がかかります (前述の 0.5 秒) ので、別の解決策を探しています。

私が考えたのはViewNavigator、アプリケーションの起動時にすべての保存されたビューを使用して作成することです。

このように非常に:

for each (var _view:XML in _allViewsConfig.children()) {
    var compView:View = new View();
    compView.percentHeight = 100;
    compView.percentWidth = 100;
    compView.name = _view.label;

    for each (var _groupElement:XML in _view.vgroup) {
        var group:VGroup = new VGroup;
        group.percentWidth = 100;
        group.percentHeight = 100;

        for each (var _windowElement:XML in _groupElement.window) {
            var window:WindowContainer = new WindowContainer;
            for each (var _componentElement:XML in _windowElement.component) {                  
                var component:UIComponent = _componentManager.create(_componentElement.@type, _componentElement);
                window.addElement(component);
            }

            group.addElement(window);
        }
        compView.addElement(group); 
    }
    views.addItem(compView);

}

views作成されたビューを格納するために使用される ArrayList です。

私が今持っている唯一の問題はView、この ArrayList に格納されている を対応するViewNavigator.

私は通常の方法で試してみました。つまりnavigation.pushView(_viewCreator.views.getItemAt(0) as Class); 、これは機能しません。エラーも何もありViewNavigatorません。ただ何もしません。したがって、Viewこのようにクラスを作成することはできないと思います。

では、どうすればこれを機能させることができますか?また、特にアプリケーションの全体的な動的な性質 (タブに基づく) を考慮すると、これは問題に対する適切な解決策だと思いますか? 当然のことながら、複雑なコンポーネントではスライド トランジションが非常に遅いため、スライド トランジションは完全に無効になります。

ヘルプ、コメント、または考えをいただければ幸いです。

編集:考え直して、Groups代わりにViewNavigatorandを使用するだけでView、これがもう少し軽量になり、ビューがプッシュされないという問題が解決するはずです。

4

1 に答える 1

0

実際ViewNavigator pushView()には、特定のクラス (メソッド パラメーター) のインスタンスを作成するメカニズムです。

すべてのナビゲーション履歴の目的で、オブジェクトをViewNavigator使用NavigationStackして関連する値を保存します (これもカスタマイズできます)。

簡単な答えはありませんが、独自のカスタム メカニズムを実装する必要があると思います(既存の便利なメソッドを活用し、他のメソッドをオーバーライドするようにViewNavigator拡張します)。ViewNavigator

于 2012-08-11T08:46:34.547 に答える