4

リストベースのコンポーネントの一般的なFlexロールオーバーカラーを取り除き、独自のスタイルのロールオーバーレンダリングを表示したいと思います。

useRollOverを'false'に設定することはオプションではありません。これを無効にすると、List.isItemHighlighted()関数も常にfalseを返すようになるためです。私のカスタムレンダラーはその機能に依存しています。

そんなに大変なことはありますか?そのロールオーバーカラーを透明に設定する方法はありませんか?レンダラーがアイテムが強調表示されているかどうかを判断する他の方法はありますか?

ありがとう!

編集:もちろん、rollOverの色を「白」に設定し、alternateRowColorsを白に似たものに設定することもできます。浮気の種類:)

4

3 に答える 3

3

カスタムItemRendererで「autoDrawBackground」プロパティを「false」に設定することにより、デフォルトのホバーされ選択された背景色を無効にして、必要に応じてレンダラーで設定できます。

これはスパークリストオプションのみです。MXコントロールにはありません。

于 2011-03-23T17:57:22.480 に答える
2

@invertedSpear、ヒントをありがとう。

それは実際に機能します!つまり、SDKを編集するのではなく、サブクラス化することは試みていません。ただし、できることは、List、DataGridなど(またはAdvancedDataGrid)のサブクラスを作成し、次の関数を追加することです。

override protected function drawHighlightIndicator(indicator:Sprite, x:Number, y:Number, width:Number,
    height:Number, color:uint, itemRenderer:IListItemRenderer):void
{
    // get style -- is this the right place?
    var alpha:Number = this.getStyle("rollOverAlpha");
    if (isNaN(alpha))
        alpha = 1.0;

    // no need to draw if alpha 0
    if (alpha <= 0)
        return;

    // draw -- this has been copied from superclass, and the alpha parameter added to beginFill()
    var g:Graphics = Sprite(indicator).graphics;
    g.clear();
    g.beginFill(color, alpha);
    g.drawRect(0, 0, width, height);
    g.endFill();

    indicator.x = x;
    indicator.y = y;
}

これで、クラスにスタイル宣言を追加すると、次のようにロールする準備が整います。

[Style(name="rollOverAlpha", type="Number", inherit="no")]
public class DataGridExt extends DataGrid
{
    ...
}

もちろん、SDKでこれを変更することは、ListBaseとAdvancedListBaseの2つのクラスに触れるだけでよいため、より適切な選択です。その上でAdobeJiraの問題を確認します。

于 2010-02-26T11:58:55.487 に答える
0

これを行う方法はありますが、面白くありません。SDK自体を編集できます(オープンソースの場合はYay)。そこに移動して、ハイライトの色が設定されている場所を見つけ、コードの追加を開始して、ハイライトのアルファのパブリックプロパティを生成できます。物事を完全に台無しにする可能性があるので、最初にSDKをバックアップします。

rollOverコードはListBaseクラスにあるように見えるので、そのクラスのコピーまたは拡張を作成し、それにロールオーバーアルファ用のコードを追加します。次に、この新しいListBaseから継承するListクラスのコピーを作成します。

幸運を祈ります。成功した場合は、他の人も同じことをしたいと思うかもしれないので、新しいクラスを世界と共有してください。

于 2010-02-25T15:31:39.853 に答える