PDA

Просмотр полной версии : Как нарисовать рамку компонента при помощи mx.skins.halo.RectBorder


afarber
31.10.2007, 03:12
Добрый вечер!

Adobe пишет в Component development checklist (http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00002481.html):


Use the RectBorder class (mx.skins.halo.RectBorder)
rather than graphical elements to draw borders around objects.


но вот как это делать конкретно, нигде не объясняет.

Мне хотелось бы нарисовать вокруг своих компонентов такую же прямоугольную зеленую рамку, как и у других стандартных v2-компонентов типа mx.controls.Button.

Я приготовил совсем простой компонент, который рисует прямоугольник:

http://preferans.de/flash/RectComp.as
http://preferans.de/flash/RectComp.fla

- как бы добавить теперь вокруг него стандартную haloGreen-рамку?

В адобовском файле mx\skins\halo\RectBorder.as есть интересное место:

function drawBorder(Void):Void
{
...
var b:String = getStyle(borderStyleName);
....
else if (b == "default")
{
drawRoundRect( 0,5,ww,hh-5,{tl:5,tr:5,br:0,bl:0},0x5e5e5e,10);//OuterBorder
drawRoundRect(
1,4,ww-2,hh-5,{tl:4,tr:4,br:0,bl:0},[0x5e5e5e,0x5e5e5e],10,0,"radial");
drawRoundRect(
2,0,ww-4,hh-2,{tl:3,tr:3,br:0,bl:0},[0xc4cccc,0xb4bcbc],100,0,"radial");
drawRoundRect( 3,1,ww-6,hh-4,{tl:2,tr:2,br:0,bl:0},0xffffff,100);//face
}


И Xray показывает в моем RectComp наличие функции drawRoundRect.

Но вот как их соединить?

Спасибо
Алекс

afarber
31.10.2007, 15:04
Вот такой код вроде работает - рисует тонкую серую рамку (непонятно из какой темы):


public function createChildren():Void {
createClassObject(RectBorder, 'border_mc',
this.getNextHighestDepth(),
{ styleName: this, borderStyleName: 'default'});
}

private function size():Void {

super.size();
border_mc.setSize(width, height);

invalidate();
}


Но вот как получить зеленую рамку как у стандартных
halo-themed buttons?

Infectedcell
07.11.2007, 13:50
а руками компоненту перерисовать не пробовал? это ж просто совсем.. загружаем библиотеку компоненты во Флеш.. там будет папочка со всеми мувиками, ну там их руками и перерисовываем...
Это собственно тоже, что и прицепить компонентовские мувики к твоей компоненте...
и не надо никаких классов, тем более, если сроки ждмут =D....