![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Совершенно на ровном месте завис и не могу понять причину проблемы.
Есть clip(movieClip), в нем obj(MovieClip), и отдельный от всех клип point(красный кружок) Функция выполняет такое: нужно переместить obj в случайное место -> затем создаются случайные координаты по x и y -> и проверить clip(его родителя) на hitTestPoint с этими случайными координатами -> если хит-тест выдает "сталкивается", то нужно вызывать эту функцию до тех пор пока хит-тест не выдаст "не сталкивается" и поместить point(красный кружок) в эти координаты.То есть я хочу что бы point(красный круг) всегда был вне клипа clip Всё так просто, а не работает, рано или поздно всё равно point оказывается поверх клипа clip. function hit() { //случайные координаты var xrand=Math.random()*550; var yrand=Math.random()*400; //проверка на столкновения if (clip.hitTestPoint(xrand,yrand,true)) { //если сталкивается то перезапускаю функцию hit(); } else { //если не сталкивается то помещаю точку в это место point.x=xrand; point.y=yrand; } } stage.addEventListener(MouseEvent.CLICK,cl); function cl(e:MouseEvent) { //случайные координаты для объекта в клипе clip.obj.x=Math.random()*550; clip.obj.y=Math.random()*400; //проверка на столкновение hit(); } |
|
|||||
|
Вы назвали рекурсию "перезапуском" в своём коде.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Ага, я понял, но если через цикл, то та же проблема осталась
![]() Что же делать, неужели нет выхода... function hit() { //случайные координаты var xrand=Math.random()*550; var yrand=Math.random()*400; //проверка на столкновения while (clip.hitTestPoint(xrand,yrand,true)) { //если сталкивается то перезапускаю функцию xrand=Math.random()*550; yrand=Math.random()*400; } //если не сталкивается то помещаю точку в это место point.x=xrand; point.y=yrand; } stage.addEventListener(MouseEvent.CLICK,cl); function cl(e:MouseEvent) { //случайные координаты для объекта в клипе clip.obj.x=Math.random()*550; clip.obj.y=Math.random()*400; //проверка на столкновение hit(); } Последний раз редактировалось samana; 08.08.2010 в 17:07. |
|
|||||
|
Регистрация: Jan 2010
Сообщений: 17
|
function hit() { //случайные координаты var xrand=Math.random()*550; var yrand=Math.random()*400; //проверка на столкновения if (clip.obj.hitTestPoint(xrand,yrand)) { //если сталкивается то перезапускаю функцию hit(); } else { //если не сталкивается то помещаю точку в это место point.x=xrand; point.y=yrand; } } Ты сделал проверку коллизии не с obj, а clip. Поэтому если заметил у тебя за границы синей рамки точка не заходит. Но вот если делать if (clip.obj.hitTestPoint(xrand,yrand,true)) то все равно точка накладывается на круг. |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:08. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|