DottedSpacer Component
Olá.
Recentemente eu estava desenvolvendo um índice, como aqueles de livros, onde tem um título do lado esquerdo e uma linha pontilhada que leva até o número da página, no lado direito...mas...como implementar a linha pontilhada?
Ao invés de tentar tratar strings, calculando tamanho para colocar os pontos, etc., o que seria outra possível - e mais difícil - solução, acabei fazendo, com uma grande ajuda do Marcelo Savioli, um componente bem simples para preencher esse espaço. E como estendemos do Spacer para criar este, o chamamos de DottedSpacer.
Veja a classe e resultado a seguir:
-
package br.com.dclick.controls
-
{
-
import mx.controls.Spacer;
-
-
public class DottedSpacer extends Spacer
-
{
-
public function DottedSpacer()
-
{
-
super();
-
}
-
-
public var dotSize:Number = 2;
-
public var spaceSize:Number = 2;
-
public var lineThickness:Number = 1;
-
public var lineColor:Number = 0x000000;
-
-
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
-
{
-
-
super.updateDisplayList(unscaledWidth, unscaledHeight);
-
-
var xPos:Number = 0;
-
var isDot:Boolean = true;
-
-
this.graphics.clear();
-
-
this.graphics.lineStyle( lineThickness, lineColor );
-
-
while( xPos <unscaledWidth )
-
{
-
if( isDot )
-
{
-
this.graphics.moveTo( xPos, unscaledHeight - lineThickness );
-
this.graphics.lineTo( xPos + dotSize, unscaledHeight - lineThickness );
-
xPos += dotSize;
-
}
-
else
-
{
-
xPos += spaceSize;
-
}
-
isDot = !isDot;
-
}
-
-
}
-
-
}
-
}
Exemplo:
Fonte:
-
<?xml version="1.0" encoding="utf-8"?>
-
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
-
xmlns:controls="br.com.dclick.controls.*" backgroundColor="#CCEEFF">
-
<mx:HBox width="100%">
-
<mx:Label text="Capítulo 1" />
-
<controls:DottedSpacer height="13" width="100%"/>
-
<mx:Label text="1" />
-
</mx:HBox>
-
<mx:HBox width="100%">
-
<mx:Label text="Capítulo com Nome Maior" />
-
<controls:DottedSpacer height="13" width="100%"/>
-
<mx:Label text="3" />
-
</mx:HBox>
-
<mx:HBox width="100%">
-
<mx:Label text="Fim" />
-
<controls:DottedSpacer height="13" width="100%"/>
-
<mx:Label text="7" />
-
</mx:HBox>
-
</mx:Application>
Abraço.
2 comentários para “DottedSpacer Component”
Muito bacana a solução Paulo. Eu tive de fazer isso um dia desse e fiz a “outra possível” que ñ é lá tão dificil, mas a sua é mais legal.
[]!
Po Ficou Bom.
Adicionar comentário
Muito bacana a solução Paulo. Eu tive de fazer isso um dia desse e fiz a “outra possível” que ñ é lá tão dificil, mas a sua é mais legal.
[]!
Po Ficou Bom.

