Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   "Расплывание" формы по кругу (http://www.flasher.ru/forum/showthread.php?t=140458)

willis83 30.05.2010 16:12

"Расплывание" формы по кругу
 
Подскажите реализации следующей задумки:
Имеется прямоугольник, например 600х200 пикселей, этот прямоугольник разбит на маленькие квадратики 10х10 пикселей(имеем 1200 маленьких квадратиков). Задача состоит в том, чтобы эти квадратики проявлялись по мере "расплывания" невидимой окружности от левого верхнего края прямоугольника. Т.е. как только расплываемая окружность "наплывает" на центр очередного квадратика, этот квадратик проявляется в главной сцене. Вообщем надо создать эффект плавного проявления прямоугольника по увеличивающийся окружности. Я думал создать shape с point'ами центров этих квадратиков и потом скейлить шейп с окружностью и по мере этого hitTestPoint'ом проверять "налезла" ли эта окружность на очередной поинт, если да, то проявлять нужный квадратик на главной сцене.... только с реализацией туговато. Может кто-нибудь подскажет более рациональную идею... Заранее спасибо.

etc 30.05.2010 17:06

willis83, спам в ваших постах от ваших вирусов предлагаете мне вычищать?

willis83 30.05.2010 17:08

Дико извиняюсь

Добавлено через 1 час 10 минут
Разобрался. Циклом создал 1200 (60х20) точек(Point) с нужными координатами, занёс все в массив. Создал шейп с кругом, по таймеру скэйлю круг и тут же проверяю на hitTestPoint все поинты через массив. Те которые попадают под круг, создают класс маленького квадратика с координатами из массива. Правда нагрузка наверное сумашедшая, получается за каждые 40 млсек (25fps), он проверяет совпадения у 1200 точек. Можно было бы разгрузить если массив был бы многомерным, но чё-то не получается многомерный массив у меня создать ((

Добавлено через 5 часов 8 минут
Всё написал и возник такой вопрос: Почему hitTestPoint срабатывает не в момент наложения фигуры на точку а в момент наложения рамки от фигуры на точку? И можно ли это как-то исправить? Получается растекание по прямоугольнику, а не по кругу (((

Добавлено через 8 часов 6 минут
во всём разобрался, тему можно закрыть ))) сам спросил, сам ответил, млин

MidnightOne 31.05.2010 16:39

>>сам спросил, сам ответил, млин.

Не ответил как от рамки избавиться.
Напиши, если не затруднит.

NeonSelf 31.05.2010 18:57

willis83, а тебе не кажется, что ты перегнул палку с HitTestPoint? а как же старая добрая математика? пересечение точки с окружностью считается на раз-два: если расстояние меньше или равно радиусу окружности - значит пересеклись.

то есть, если выполняется условие:
(x1-x2)^2+(y1-y2)^2 < R^2

значит точка (x2, y2) пересеклась с окружностью, центр которой в (x1, y1) и радиус которой равен R.

А для того, чтобы было меньше тормозов - создай список точек, которые еще не пересеклись, и когда они будут пересекаться - удаляй из списка, чтобы больше не проверять пересечения с ними.

желаю успехов, GL & HF

кстати в твоем случае, если центр окружности неподвижный и радиус растет по известному тебе закону - можно заранее рассчитать время появления квадратиков через расстояние от каждого из них до центра окружности и не проверять пересечения каждый кадр а просто ждать определенное время до появляения.

willis83 31.05.2010 22:02

MidnightOne, у метода hitTestPoint 3 входящих параметра - координата х точки, координата у и флаг ShapeFlag, по умолчанию он идёт как false, но если поставить true, то hitTest идёт по фигуре.
NeonSelf, да, ты прав. Геометрия лучше любых методов. Сейчас попробую переписать по формулам. Правда прогонять всё равно придётся через весь массив, даже если записать в массиве кроме х и у ещё и длину до центра окружности(чтобы лишний раз не просчитывать её в каждом фрэйме). Разгрузка ЦП скорее всего будет, хотя и неуверен что очень большая, вообщем и так не особо шкалит, на моём 2ух ядерном intel T2310 больше 27% загрузки ЦП не наблюдается, абсолютно без тормозов. А по поводу удаление уже попавших точек это само собой разумеющееся, они же так будут заново вызывать класс квадратиков(в моём случае квадратики вынесены в отдельный класс, т.к. имеют анимацию появления)

Добавлено через 11 минут
а на счёт того, что расчитывать всё проявления по геометрическим формулам учитывая постоянные скорости и правильные формы, то это не подходит, т.к. проявляться будут не только по кругу но и другим геометрическим формам, и там уже легче через hitTest чем геометрией


Часовой пояс GMT +4, время: 09:14.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.