如何仅在actionscript中创建具有自定义高度的fl.controls.Slider蒙皮?

如何仅在actionscript中创建具有自定义高度的fl.controls.Slider蒙皮?,actionscript,flash-cs5,skin,Actionscript,Flash Cs5,Skin,我在AdobeFlashCS5.5的图形编辑器中创建了一个名为customSliderTrack的皮肤。该滑块现在位于FLA文件的库中 我可以使用以下代码使用此皮肤: var cls:Class = getDefinitionByName("CustomSliderTrack") as Class; var tmpTrack:Sprite = new cls(); slider.setStyle("sliderTrackSkin",tmpTrack); 然而,由于FLA文件的二进制性质以及不同

我在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对象,但我不能用新的MovieClip获得相同的结果。我认为这可能与图形编辑器中的虚线有关,或者修改了默认的SliderTrack_外观。我还没有找到它们的含义以及如何用Actionscript代码替换它们。

根据曲目资源的复杂性,您可以使用绘图API完成这一点:

一个非常简单的例子是:

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像素。可以在代码中设置以控制蒙皮的缩放方式。在上面的示例中,矩形的边框不会缩放,但内部的黑色矩形会缩放。您只需要在绘图API中尝试这些方法

如果您需要更复杂的资源,我建议加载图像,然后将其传递到slider.setStyle。

setStyle自动设置track.height和track.width。对于track.height,slider.height属性似乎没有任何效果。要解决此问题,只需将track.height设置为最佳值

要访问轨迹,请扩展滑块类并覆盖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;
    }
}

事情是这样的,不是这样的!第2-5行必须以track.graphics开始,然后我会得到100%的黑色Slidertrack,但是大小会自动缩放,因此新轨迹的大小与默认轨迹的大小完全相同。正如我之前在图形编辑器中提到的,有一些虚线标记了在skaling时被skaled的区域,但是我没有找到正确的actionscript命令来执行这样的操作!我已经更新了代码,添加了一个如何设置scale9区域的示例,即您在flashide中看到的虚线。也谢谢你抓到丢失的。图形调用,我也添加了这些。谢谢,这就是我要找的!