1

私はモバイルアプリを開発しています。水平方向のリストを含むビューがあります。各アイテムには長い説明があるため、その独立した情報を垂直方向にスクロールする必要があります。itemRendererの子としてスクロールを追加しようとしています。そして、私はそれを取得しません。誰かが私が悪いことをしていることを知っていますか?ItemRendererを継承したクラスがあります(AsFusionのBaseRendererも試してみましたが、モバイルアプリの方がパフォーマンスが高いようで、同じ結果になります)。そして、これが私のコードからのスクロールの一部です:

    override protected function createChildren():void
    {
        super.createChildren();
        scroller = new VScrollBar();
        scroller.percentHeight = 100;
        scroller.setStyle('right', 0);
        scrollGroup = new Group();
        scrollGroup.percentHeight = 100;
        scrollGroup.percentWidth = 100;
        super.addElement(scroller);
        super.addElement(scrollGroup);

        scroller.viewport = scrollGroup;
    }

私も試しました

    override protected function createChildren():void
    {
        super.createChildren();
        scroller = new Scroller();
        scroller.percentHeight = 100;
        scroller.percentWidth = 100;
        scrollGroup = new Group();
        scrollGroup.percentHeight = 100;
        scrollGroup.percentWidth = 100;
        super.addElement(scroller);
        super.addElement(scrollGroup);

        scroller.viewport = scrollGroup;
    }

そして結果は同じです。リスト内の空のアイテム。ページを変更でき(リストの水平スクロールのページスナップ)、次の項目も空です。addElement(scroller)を削除すると、アイテムは完全に表示されますが、本当に必要な垂直スクロールはありません。したがって、問題はスクローラーにあります。私がそんなに悪いことをしているという考えはありますか?お願いします?アクションスクリプトでソリューションが必要です。より多くのアイテムレンダラーを実行し、継承を行います。モバイルのパフォーマンスは、アクションスクリプトの方が優れています。前もって感謝します。

4

3 に答える 3

0

アイテムレンダラーでスクロールバーを使用したことはありません...しかし、Scrollerコンポーネントをチェックしてみてください。このようなもの:

<s:ItemRenderer>
    <s:Scroller width="100%" height="100%">
        <s:Group>
            <Your_components_here />
        </s:Group>
    </s:Scroller>
</s:ItemRenderer>

ただし、動作が異なるかどうかはわかりません。

于 2012-05-03T10:23:43.557 に答える
0

巻物が機能するためには、実際の幅と高さが必要です。セットはありますが、通過するグループは実際には空のようですpercentWidth。それらにコンテンツを追加します。

テキストをスクロールしている場合は、の組み込みのスクロールを使用する方が現実的かもしれませんTextArea

于 2012-05-03T12:50:12.100 に答える
0

私は、Grigorash Vasilijの指導を受けて、グループ内のコンテンツサイズが0で、プライベートの表示変数がfalseであるため、スクローラーのコンテンツが表示されていないことに気付きました。そのため、スクローラーのパーセントサイズが機能していなかったので、updateDisplayListメソッドで更新しました。

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

        scroller.width = unscaledWidth;
        scroller.height = unscaledHeight;
        ...
    }

その後、スクローラーが水平になり、水平スクロールが機能しなくなりました。必要に応じて、アイテムRendererにverticalScrollが必要だったので、Scrollerのコンストラクターの後で、スクロールのhorizo​​ntalPolicyをoffに設定しました。結果は次のとおりです。

    override protected function createChildren():void
    {
        super.createChildren();
        scroller = new Scroller();
        scroller.percentHeight = 100;
        scroller.percentWidth = 100;
        scroller.setStyle("horizontalScrollPolicy", "off");
        scrollGroup = new Group();
        scrollGroup.percentHeight = 100;
        scrollGroup.percentWidth = 100;
        addChild(scrollGroup);
        scroller.viewport = scrollGroup;
        addChild(scroller);

    }

私のクラスはAsfusionからBaseRendererを継承しています。itemrendererを継承する場合は、addChildの代わりにaddElementを使用してください。

于 2012-05-04T07:24:10.517 に答える