![]() |
|
||||||||||
|
|||||
|
Подскажите реализации следующей задумки:
Имеется прямоугольник, например 600х200 пикселей, этот прямоугольник разбит на маленькие квадратики 10х10 пикселей(имеем 1200 маленьких квадратиков). Задача состоит в том, чтобы эти квадратики проявлялись по мере "расплывания" невидимой окружности от левого верхнего края прямоугольника. Т.е. как только расплываемая окружность "наплывает" на центр очередного квадратика, этот квадратик проявляется в главной сцене. Вообщем надо создать эффект плавного проявления прямоугольника по увеличивающийся окружности. Я думал создать shape с point'ами центров этих квадратиков и потом скейлить шейп с окружностью и по мере этого hitTestPoint'ом проверять "налезла" ли эта окружность на очередной поинт, если да, то проявлять нужный квадратик на главной сцене.... только с реализацией туговато. Может кто-нибудь подскажет более рациональную идею... Заранее спасибо. Последний раз редактировалось willis83; 30.05.2010 в 18:27. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
willis83, спам в ваших постах от ваших вирусов предлагаете мне вычищать?
|
|
|||||
|
Дико извиняюсь
Добавлено через 1 час 10 минут Разобрался. Циклом создал 1200 (60х20) точек(Point) с нужными координатами, занёс все в массив. Создал шейп с кругом, по таймеру скэйлю круг и тут же проверяю на hitTestPoint все поинты через массив. Те которые попадают под круг, создают класс маленького квадратика с координатами из массива. Правда нагрузка наверное сумашедшая, получается за каждые 40 млсек (25fps), он проверяет совпадения у 1200 точек. Можно было бы разгрузить если массив был бы многомерным, но чё-то не получается многомерный массив у меня создать (( Добавлено через 5 часов 8 минут Всё написал и возник такой вопрос: Почему hitTestPoint срабатывает не в момент наложения фигуры на точку а в момент наложения рамки от фигуры на точку? И можно ли это как-то исправить? Получается растекание по прямоугольнику, а не по кругу ((( Добавлено через 8 часов 6 минут во всём разобрался, тему можно закрыть ))) сам спросил, сам ответил, млин |
|
|||||
|
Регистрация: Jan 2010
Сообщений: 62
|
>>сам спросил, сам ответил, млин.
Не ответил как от рамки избавиться. Напиши, если не затруднит. |
|
|||||
|
Регистрация: May 2010
Адрес: Украина, Донецкая обл., Харцызск
Сообщений: 13
|
willis83, а тебе не кажется, что ты перегнул палку с HitTestPoint? а как же старая добрая математика? пересечение точки с окружностью считается на раз-два: если расстояние меньше или равно радиусу окружности - значит пересеклись.
то есть, если выполняется условие: (x1-x2)^2+(y1-y2)^2 < R^2 значит точка (x2, y2) пересеклась с окружностью, центр которой в (x1, y1) и радиус которой равен R. А для того, чтобы было меньше тормозов - создай список точек, которые еще не пересеклись, и когда они будут пересекаться - удаляй из списка, чтобы больше не проверять пересечения с ними. желаю успехов, GL & HF кстати в твоем случае, если центр окружности неподвижный и радиус растет по известному тебе закону - можно заранее рассчитать время появления квадратиков через расстояние от каждого из них до центра окружности и не проверять пересечения каждый кадр а просто ждать определенное время до появляения. |
|
|||||
|
MidnightOne, у метода hitTestPoint 3 входящих параметра - координата х точки, координата у и флаг ShapeFlag, по умолчанию он идёт как false, но если поставить true, то hitTest идёт по фигуре.
NeonSelf, да, ты прав. Геометрия лучше любых методов. Сейчас попробую переписать по формулам. Правда прогонять всё равно придётся через весь массив, даже если записать в массиве кроме х и у ещё и длину до центра окружности(чтобы лишний раз не просчитывать её в каждом фрэйме). Разгрузка ЦП скорее всего будет, хотя и неуверен что очень большая, вообщем и так не особо шкалит, на моём 2ух ядерном intel T2310 больше 27% загрузки ЦП не наблюдается, абсолютно без тормозов. А по поводу удаление уже попавших точек это само собой разумеющееся, они же так будут заново вызывать класс квадратиков(в моём случае квадратики вынесены в отдельный класс, т.к. имеют анимацию появления) Добавлено через 11 минут а на счёт того, что расчитывать всё проявления по геометрическим формулам учитывая постоянные скорости и правильные формы, то это не подходит, т.к. проявляться будут не только по кругу но и другим геометрическим формам, и там уже легче через hitTest чем геометрией Последний раз редактировалось willis83; 31.05.2010 в 22:10. |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|