![]() |
|
||||||||||
|
|||||
|
Доброго времени суток господа и господини
![]() вот уже второй день пытаюсь найти решение и - ниалё ![]() казалось бы простая штука встала перед моим мозговым обработчиком но в итоге оказалась тупиковой для меня задача: слепить большой и маленький прямоугольник так чтобы один мог ездить по линии соединения с другим причем что у этих прямоугольников есть линия цветная а в месте слипания этих прямоугольников ее не должно быть . и все вроде просто но у этих двух прямоугольников есть скругленные углы которые и "вылазят" когда соединение происходит в конце и + эти прямоугольники плупрозрачны тоесть один на другой просто так не нацепить вот и картинка [IMG]http://s57.***********/i158/1006/fa/e37eec0605bc.jpg[/IMG] может кто делал подобное поделитесь идеями как такое организовать потому как мой нынешний вариант - использование пнг и маски как-то кривенько спаисбо |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Если лень делать геометрические рассчеты для рисования в Graphics, можно сделать два спрайта, в один поместить полупрозрачный фон, а в другой - два черных прямоугольника, и сделать его маской к первому. Бордер же можно организовать фильтром - glow или dropshadow без смещения.
Добавлено через 1 час 12 минут Вот пример... package { import flash.display.Sprite; import flash.display.BlendMode; import flash.events.Event; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.MouseEvent; import flash.filters.DropShadowFilter; import flash.geom.Rectangle; public class Main extends Sprite { private var _container :Sprite = new Sprite(); private var _mask :Sprite = new Sprite(); private var _background :Sprite = new Sprite(); private var _staticRectangle :Sprite = new Sprite(); private var _dynamicRectangle:Sprite = new Sprite(); private var _dragRect :Rectangle = new Rectangle(0, 0, 0, 400);; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; // entry point addChild(_container); _container.x = _container.y = 50; _background.graphics.beginFill(0x000000, 0.5); _background.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); _staticRectangle.graphics.beginFill(0x000000, 1); _staticRectangle.graphics.drawRoundRect(0, 0, 500, 500, 12); _mask.addChild(_staticRectangle); _staticRectangle.x = 150; _dynamicRectangle.graphics.beginFill(0x000000, 1); _dynamicRectangle.graphics.drawRoundRect(0, 0, 200, 100, 12); _mask.addChild(_dynamicRectangle); _mask.graphics.beginFill(0x000000, 0); _mask.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); //// _container.addChild(_background); _container.addChild(_mask); _mask.cacheAsBitmap = true; _mask.blendMode = BlendMode.ALPHA; _background.blendMode = BlendMode.NORMAL; _container.blendMode = BlendMode.LAYER; // цвет и соотношения прозрачностей заливки и бордера регулировать здесь - в настройках фильтра (дробные числа). _container.filters = [new DropShadowFilter(0, 90, 0x000000, 0.10, 2, 2, 10.00, 3, false, true, true)]; _dynamicRectangle.addEventListener(MouseEvent.MOUSE_DOWN, onPress); } private function onPress(event:MouseEvent):void { _dynamicRectangle.removeEventListener(MouseEvent.MOUSE_DOWN, onPress); _dynamicRectangle.addEventListener(MouseEvent.MOUSE_UP, onUp); _dynamicRectangle.startDrag(false, _dragRect); } private function onUp(event:MouseEvent):void { _dynamicRectangle.removeEventListener(MouseEvent.MOUSE_UP, onUp); _dynamicRectangle.addEventListener(MouseEvent.MOUSE_DOWN, onPress); _dynamicRectangle.stopDrag(); } } }
__________________
Reality.getBounds(this); |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Забыл файлик прикрутить)
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:09. |
|
|
« Предыдущая тема | Следующая тема » |
|
|