سؤال

وأواجه بعض المشاكل عند محاولة الجلد شريط التمرير على horizontalList مع Degrafa. لا تظهر شريط التمرير على الإطلاق. راجعت لمعرفة ما إذا كان من المفترض شريط التمرير لتظهر دون السلخ، ويفعل. هل هناك أي gotchas مع القيام بذلك؟ وفيما يلي بعض التعليمات البرمجية:

وهذا هو المكان الذي أحدد HorizontalList حيث أريد شريط تمرير البشرة

<mx:HorizontalList horizontalScrollBarStyleName="thumbnailScrollbar"/>

و

وهنا هو المكان الذي أحدد ClassReference للجلود (خالية لسهام لذلك هم لا تظهر).

.thumbnailScrollbar
{
    up-arrow-skin:      ClassReference(null);
    down-arrow-skin:    ClassReference(null);
    trackSkin:      ClassReference("ScrollBarTrackSkin");
    thumbSkin:      ClassReference("ScrollBarThumbSkin");
}

و

وScrollBarTrackSkin:

<?xml version="1.0" encoding="utf-8"?>
<GraphicBorderSkin  xmlns:mx="http://www.adobe.com/2006/mxml" 
                xmlns="http://www.degrafa.com/2007">
    <fills>
        <SolidFill id="upFill" color="#FFFFFF" alpha="0.8"/>
    </fills>

    <geometry>
        <RoundedRectangle id="track" x="-8" cornerRadius="16" width="{this.skinWidth}" height="{this.skinHeight}" fill="{upFill}"/>
    </geometry>

</GraphicBorderSkin>

و

وScrollBarThumbSkin:

<?xml version="1.0" encoding="utf-8"?>
<GraphicBorderSkin  xmlns:mx="http://www.adobe.com/2006/mxml" 
                       xmlns="http://www.degrafa.com/2007">

    <fills>
        <SolidFill id="background" color="#333333" alpha=".8"/>
    </fills>

    <geometry>
        <RoundedRectangle id="thumb" cornerRadius="16" width="{this.skinWidth}" height="{this.skinHeight}" fill="{background}"/>
    </geometry>
</GraphicBorderSkin>

و

وأنا ملء HorizontalList مع أكثر من البنود من يمكن مشاهدتها، وكما قلت من قبل ويظهر شريط التمرير حتى عندما يمكنني إزالة السلخ.

هل كانت مفيدة؟

المحلول

وأين هو skinHeight وskinWidth يكون لديك مجموعة؟ عادة، degrafa أمثلة تفعل شيئا من هذا القبيل في الجلد لتحديث الطول / العرض:

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

            }

وبالإضافة إلى ذلك، وكنت بحاجة للقيام بذلك:

override public function get measuredWidth():Number {return 16; }
override public function get measuredHeight():Number {return 10;}

وفي بلدي جلود التمرير للحصول على الطول والعرض أردت. (نفس لكلا V & H كما يفعلون دوران داخليا). كان هناك بعض التعليمات البرمجية hacky في جلود فليكس التمرير وكان بلدي القضبان لا تظهر سواء.

ولكن أنا لا تستخدم حاليا degrafa لبلدي الجلود، لذلك قد يكون هناك قضية أخرى. ليس لدي أية أمثلة أمامي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top