![]() |
|
||||||||||
|
|||||
|
Всем привет.
Объясните, пожалуйста, что не так в моем случае. У меня есть мувик bgr, в нем мувик bgrr и aaa. Для aaa написана onEnterFrame ф-ция, которая опускает aaa вниз, пока он не коснется своим центром bgrr. Проблема в том, что при перемещении основного мувика bgr aaa смещается относительно bgrr. Точнее, когда центр aaa уже находится на bgrr, то при перемещении bgr хитТест центра aaa и bgrr иногда выдает false, из-за чего aaa перемещается еще на шаг ниже. Короче, лучше глянуть: http://flashart.com.ua/1 потрясите мышкой красный круг. function standBy() {
this.hit = false;
if (bgr.bgrr.hitTest(this._x + bgr._x, this._y + bgr._y, true)==false)
this._y+=6;
trace (this._x);
}
bgr.aaa.onEnterFrame = standBy;
bgr.onMouseDown = function () {this.startDrag();}
Как мне добиться, чтобы aaa, раз уткнувшись в bgrr, больше не смещалось относительно него при перемещении bgr?
__________________
Платон мне друг, но истина в вине. |
|
|||||
|
>>чтобы aaa, раз уткнувшись в bgrr, больше не смещалось относительно него при перемещении bgr
не проверять больше ничего: |
|
|||||
|
Так нельзя, мне нужно проверять, т.к. bgrr может опуститься ниже, а aaa должно всегда находиться на поверхности bgrr.
__________________
Платон мне друг, но истина в вине. |
|
|||||
|
не было особого желания вникать, но мне показалось, что не до конца продумана логика поведения - ошибка в ней...
но мне кажется, проще всего - убить onEnterFrame после соприкосновения, а после движения bgrr, можно опять же запустить onEnterFrame |
|
|||||
|
Ааа, ошибка в логике поведения... Понятно...
__________________
Платон мне друг, но истина в вине. |
|
|||||
|
Цитата:
|
|
|||||
|
Хочу прояснить ситуацию: мне не нужны обходные пути, меня интересует, как сделать, чтоб aaa не смещалась относительно bgrr при перемещении bgr.
Описанная выше ситуация сложилась во время программирования игры. Допустим, aaa - это один персонаж, а bgrr - другой. Так вот персонаж aaa сидит на персонаже bgrr. Если bgrr отойдет в сторону, мне не нужно, чтобы aaa ехал на нем. Мне нужно, чтобы он плавно опустился на освободившееся место. И вообще, как объяснить то, что я описал выше? Очередная недоработка флэш?
__________________
Платон мне друг, но истина в вине. |
|
|||||
|
Впринципе - вы неправильно понимаете, как работает startDrag(). Хотя это не ваша вина, наверное.
Попробуйте так: function standBy() {
this.hit = false;
if (bgr.bgrr.hitTest(this._x + bgr._x, this._y + bgr._y, true)==false)
this._y+=6;
}
bgr.aaa.onEnterFrame = standBy;
bgr.onMouseDown = function () {this.drag=true;}
bgr.onMouseMove=function(){if(this.drag){this._x=_xmouse,this._y=_ymouse; updateAfterEvent()}}
|
|
|||||
|
объяснить внятно трудно, скорее всего дело в том, что пересчет при драге не синхронизирован с enterFrame, поэтому мувик проскакивает в зону с хитТестом, а эта ситуация у тебя никак не обрабатывается..
учесть этот нюанс можно так, например: |
|
|||||
|
2crazyone: да startDrag тут не при чем, так происходит при любом перемещении bgr вверх-вниз.
__________________
Платон мне друг, но истина в вине. |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:58. |
|
|
« Предыдущая тема | Следующая тема » |
|
|