Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.05.2010, 16:12
willis83 вне форума Посмотреть профиль Отправить личное сообщение для willis83 Найти все сообщения от willis83
  № 1  
Ответить с цитированием
willis83
 
Аватар для willis83

Регистрация: Jan 2008
Адрес: Украина, Славутич
Сообщений: 646
Отправить сообщение для willis83 с помощью ICQ
По умолчанию "Расплывание" формы по кругу

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


Последний раз редактировалось willis83; 30.05.2010 в 18:27.
Старый 30.05.2010, 17:06
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
willis83, спам в ваших постах от ваших вирусов предлагаете мне вычищать?

Старый 30.05.2010, 17:08
willis83 вне форума Посмотреть профиль Отправить личное сообщение для willis83 Найти все сообщения от willis83
  № 3  
Ответить с цитированием
willis83
 
Аватар для willis83

Регистрация: Jan 2008
Адрес: Украина, Славутич
Сообщений: 646
Отправить сообщение для willis83 с помощью ICQ
Дико извиняюсь

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

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

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

Старый 31.05.2010, 16:39
MidnightOne вне форума Посмотреть профиль Отправить личное сообщение для MidnightOne Найти все сообщения от MidnightOne
  № 4  
Ответить с цитированием
MidnightOne
 
Аватар для MidnightOne

Регистрация: Jan 2010
Сообщений: 62
>>сам спросил, сам ответил, млин.

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

Старый 31.05.2010, 18:57
NeonSelf вне форума Посмотреть профиль Отправить личное сообщение для NeonSelf Найти все сообщения от NeonSelf
  № 5  
Ответить с цитированием
NeonSelf

Регистрация: May 2010
Адрес: Украина, Донецкая обл., Харцызск
Сообщений: 13
willis83, а тебе не кажется, что ты перегнул палку с HitTestPoint? а как же старая добрая математика? пересечение точки с окружностью считается на раз-два: если расстояние меньше или равно радиусу окружности - значит пересеклись.

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

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

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

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

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

Старый 31.05.2010, 22:02
willis83 вне форума Посмотреть профиль Отправить личное сообщение для willis83 Найти все сообщения от willis83
  № 6  
Ответить с цитированием
willis83
 
Аватар для willis83

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

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


Последний раз редактировалось willis83; 31.05.2010 в 22:10.
Создать новую тему Ответ Часовой пояс GMT +4, время: 00:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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