![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 213
|
Есть ли методы, аналогичные HitTestObject?
|
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Есть ещё hitTestPoint http://help.adobe.com/ru_RU/FlashPla...#hitTestPoint()
А так, лучше самому, что то придумать.. Пересечение отрезков, лучей, различных фигур.. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Еще DisplayObjectContainer#getObjectsUnderPoint()
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
Цитата:
public function intersects(rect1:Rectangle, rect2:Rectangle):Boolean { return (!((rect1.right<rect2.left)||(rect1.left>rect2.right))) && (!((rect1.bottom<rect2.top)||(rect1.top>rect2.bottom))); } UPD: Как подсказали ниже, Rectangle#intersects() все таки быстрее работает. Последний раз редактировалось MikroAcse; 21.09.2013 в 21:38. |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Всегда думал, что пересечение ректанглов определяется методом Rectangle#intersects().
Или он медленней? UPD: Проверил, intersects() быстрее в полтора раза.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
Цитата:
Добавлено через 2 минуты Цитата:
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Feb 2012
Сообщений: 1,540
|
Цитата:
В интернете было написано, что мой вариант (писал не я) быстрее этого самого Rectangle#intersects; Видимо, врут. Учту в следующий раз. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Rectangle; /** * ... * @author wolsh */ public class TimeTest extends Sprite { private var _counts:uint = 5000000; public function TimeTest():void { stage.addEventListener(MouseEvent.CLICK, test); } private function test(event:MouseEvent):void { var r1:Rectangle = new Rectangle(100, 220, 500, 310); var r2:Rectangle = new Rectangle(100, 310, 220, 500); var d0:Date = new Date(); for (var i:uint = 0; i < _counts; i++) { /* FIRST FIGURANT CODE */ var r:Boolean = r1.intersects(r2); /* */ } var d1:Date = new Date(); for (var j:uint = 0; j < _counts; j++) { /* SECOND FIGURANT CODE */ var n:Boolean = (!((r1.right<r2.left)||(r1.left>r2.right))) && (!((r1.bottom<r2.top)||(r1.top>r2.bottom))); /* */ } var d2:Date = new Date(); trace("FIRST : " + (d1.time - d0.time).toString()); // FIRST : 5193 trace("SECOND : " + (d2.time - d1.time).toString()); // SECOND : 6859 } } }
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:45. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|