![]() |
Визульное выделение объектов на сцене
Подскажите пожалуйста, кто делал визуальное выделение муви-клипа, как это можно реализовать? Т.е. на сцене есть mc, в виде прямоугольника, окружности и т.д.
Нужно как-то показать, какие в данный момент выделены (selection). Пробовал рисовать на graphics мувика, маленькие окружности в углах мувика. Но они плавают, при изменении размеров клипа |
Думаю стоит применить какой-нибудь фильтр, например, свечение (GlowFilter).
|
Задача не очень простая, как кажется.
Фильт наиболее простой способ, это легче чем рисовать прямоугольную рамку. Я в подобных случаях делал класс (ObjectSelector) у которого были подобные методы: 1) add( object:DisplayObject ) - добавить в список выделения объект 2) remove( object:DisplayObject ) - удалить объект из списка выделения 3) removeAll() - удалить все объекты из списка выделения Внутри (ObjectSelector) был массив, в кором я хранил этот список. Не знаю поможет ли это - мне было удобнее сделать так. |
Цитата:
|
Код AS1/AS2:
1. В функцию/метод передаем ссылку на мувик1, который надо выделить. (у меня это происходило по нажатию на него). 2.Узнаем его размеры. 3.Создаем мувик2 где будет рисоваться "выделение", и засовываем его на самый верх. 4.ставим мувик 2 в координаты (глобальные) левого верхнего угла мувика1. 5.делаем небольшой отступ (у меня 10 клеток) и рисуем квадрат в мувике2. если мувик1 меняет свои координаты (например его перетаскивают и т.д.) или меняет свой масштаб/размеры, то по событию движения мыши (если по онЭнтерФрейму - то визуально заметны скачки) каждый раз запускаем эту функцию. У меня это в АС2. В третьем реализовать не сложнее. |
Аналогично.
Мне кажется рамка не должна быть внутри выделяемых Вами объектов. Допустим все объекты которые Вам нужны находятся в контейнере objectsSprite. В objectsSprite Вы можете создать пустой контейнер для вашей рамки. Каждый раз когда выполняется изменяется содержимое контейнера - перерисовывать рамку. Благодаря классу, который я Вам предложил, можно организовать не подсвечиваение выделенных объектов, а прорисовку рамки Это может быть достигнуто путем перебора объектов и вычисления верхней левой и нижней правой точек. Когда границы известны достаточно вызвать drawRect с нужными размерами. |
попробуйте фильтром так
Код:
mc.filters = new Array(new GlowFilter(0xFF0000,1,6,6,6));//свечение (обрисовка контуром)Код:
mc.filters = null; |
Всем спасибо. Всё таки остановился на фильтре
|
| Часовой пояс GMT +4, время: 07:30. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.