Ошибка # 1502 (скрипт выполнялся слишком долго) при использовании динамических метрик границы в GraphicRectangularBorderSkin - PullRequest
0 голосов
/ 14 апреля 2010

У меня есть скин, базовым классом которого является GraphicRectangularBorderSkin (от degrafa). Я использую его в качестве панелей. Я использую Degrafa 3.2, Flex 3.2. Каждый раз выдает ошибку # 1502 (генерируется, когда скрипт выполняется слишком долго). Если я удалю строку, изменяющую переменную em, ошибка исчезнет.

Класс в основном (хотя я перефразировал для ясности):

<GraphicRectangularBorderSkin xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="http://www.degrafa.com/2007>
   <geometry>
      <GeometryComposition>
          <RegularRectangle width="{skinWidth}" height="{skinHeight}">
             <fill>
                <SolidFill color="#00ff00" />
             </fill>
          </RegularRectangle>
   </geometry>
   <mx:Script>
     <![CDATA[
        import mx.core.EdgeMetrics;

        private var em:EdgeMetrics = new EdgeMetrics(0, 0, 0, 1);
        private var headerHeight:Number = 0;

        public override function styleChanged(styleProp:String):void{
             headerHeight = getStyle("headerHeight");
             em = new EdgeMetrics(0, headerHeight, 0, 1);// if i remove this line, the error goes away
        }

        public override function get borderMetrics():EdgeMetrics{
             return em;
        }
 ]]>
</mx:Script>
</GraphicRectangularBorderSkin>

1 Ответ

0 голосов
/ 14 апреля 2010

Так что, очевидно, вам нужно использовать GraphicPanelSkin в качестве базового класса, и он позаботится о borderMetrics для вас.

Документация здесь: http://www.degrafa.org/docs/com/degrafa/skins/GraphicPanelSkin.html

...