0

AdobeFlashCS5.5のグラフィカルエディターでcustomSliderTrackというスキンを作成しました。このスライダーは、FLAファイルの「ライブラリ」にあります。

次のコードでこのスキンを適用できます。

var cls:Class = getDefinitionByName("CustomSliderTrack") as Class;
var tmpTrack:Sprite = new cls();
slider.setStyle("sliderTrackSkin",tmpTrack);

ただし、FLAファイルのバイナリの性質と、Adobe Flashのさまざまなバージョンの互換性がないため、すべてをActionscriptで実装する必要があります。

clsがMovieClipオブジェクトであることは理解していますが、。で同じ結果を得ることができませんnew MovieClip()。これは、グラフィカルエディタの破線に関連している可能性があると思います(デフォルトのSliderTrack_skinを変更しました)。それらが何を意味するのか、そしてそれらをActionscriptコードに置き換える方法はまだわかりません。

4

2 に答える 2

0

トラックアセットの複雑さに応じて、描画APIを使用してこれを実現できます:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Graphics.html

非常に簡単な例は次のとおりです。

var track:Sprite = new Sprite();
track.graphics.lineStyle(2, 0xcccccc);
track.graphics.beginFill(0x000000, 1);
track.graphics.drawRect(0, 0, 400, 20);
track.graphics.endFill();
track.scale9Grid = new Rectangle(2, 2, 396, 16);
slider.setStyle("sliderTrackSkin",track);

これにより、サイズが400x20ピクセルの黒い長方形のトラックが作成されます。コードでscale9gridを設定して、スキンのスケーリング方法を制御できます。上記の例では、長方形の境界線は拡大縮小されませんが、内側の黒い長方形は拡大縮小されます。必要なのは、描画APIのメソッドを試すことだけです。

より複雑なアセットが必要な場合は、画像を読み込んでから、それをslider.setStyleに渡すことをお勧めします。

于 2012-04-18T21:28:03.407 に答える
0

setStyleとを自動的に設定しtrack.heightますtrack.width。属性の場合track.heightslider.height属性は効果がないようです。この問題を回避するtrack.heightには、を最適な値に設定するだけです。

trackSliderクラスの拡張にアクセスし、configUI関数をオーバーライドするには、次のようにします。

public class CustomSlider extends Slider
{
    override protected function configUI():void
    {
        // Call configUI of Slider
        super.configUI();
        // The sprite that will contain the track
        var t:Sprite = new Sprite();
        // Draw the content into the sprite
        t.graphics.beginFill(0x000000, 0.1);
        t.graphics.drawRect(0, -15, width, 30);
        t.graphics.endFill();
        // Set the Sprite to be the one used by the Slider
        this.setStyle("sliderTrackSkin",t);
        // Reset the height to the value that it should be
        track.height = 30;
    }
}
于 2012-04-19T14:23:17.347 に答える