0

私の質問は、高度なフレックス開発者または専門家向けだと思います。私のタスクは比較的単純です。ある種の水平の「ギャラリー」コンポーネントを構築する必要があり、IMGO 新しい Apache 4.10 SDK の新しいDataNavigator がこのタスクに最適です。言い換えれば、特定の INavigatorLayout を持つ DataNavigator と同じものが必要です - CarouselLayoutと同じですが、はるかに単純です - パースペクティブはありませんが、アイテム間のスムーズな移行があります。そのようなレイアウトはすでに存在するのでしょうか?

よろしくお願いします。アンドリュー。

4

1 に答える 1

1

まあ、私は満足のいく解決策を見つけました。それは私にとってはうまくいきますが、主なアイデアは次のとおりです。

package 
{
import com.greensock.TweenLite;
import spark.layouts.HorizontalLayout;
import spark.layouts.supportClasses.INavigatorLayout;
import mx.core.IVisualElement;

/**
 * @author Andrew
 */
public class LobbyNavigatorLayout3 extends HorizontalLayout implements INavigatorLayout
{
    public function LobbyNavigatorLayout3()
    {
    }


    private var _selectedElement:IVisualElement;
    public function get selectedElement() : IVisualElement
    {
        return  _selectedElement;
    }

    public function get selectedIndex() : int
    {
        return target.getElementIndex(_selectedElement);
    }

    public var ttt:Number = 0;

    public function set selectedIndex(value : int) : void
    {
        if (!target) return;
        var firstEl:IVisualElement = target.getElementAt(0);
        if (!firstEl) return;

        var shift:Number = (600 + gap) * value;

        TweenLite.to(this, 1, {ttt:shift, onUpdate:function ():void { 


            updateDisplayList(target.width, target.height);
            }} );

        _selectedElement = target.getElementAt(value);

    }


    override public function updateDisplayList(unscaledWidth : Number, unscaledHeight : Number) : void
    {
        super.updateDisplayList(unscaledWidth, unscaledHeight);
        for (var i : int = 0; i < target.numElements; i++) 
        {
            var el:IVisualElement = target.getElementAt(i);
            el.setLayoutBoundsPosition(el.x - ttt, 0);
        }
    }
}
}

これは useVirtualLayout = false; 用であると言う必要があります。これを修正するには追加の作業が必要でしたが、今のところ私には合っています。

于 2013-09-22T15:14:20.007 に答える