![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2008
Сообщений: 31
|
Есть движущийся мувик и в него вложен другой мувик
Не получается остановить основной при условии что координата Х вложенного превысит определенное значение Трэйс координаты Х основного ролика показывает изменение значения Х а вот у вложенного координата не меняется Подскажите плз где ошибка |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Ну так вы вложенный и не передвигаете. А координаты относительны. Можете использовать метод MovieClip#localToGlobal() для определения глобального положения детенка.
|
|
|||||
|
Регистрация: Jul 2008
Сообщений: 31
|
ну вообщето детенок тоже двигается вместе с родителем.хотя конечно относительно родителя он неподвижен
пробовал разобраться с localToGlobal() но пока не получилось с этим разобраться если бы пример как перевести локальные координаты в глобальные |
|
|||||
|
т.к. вы не двигаете вложенный клип, то логично что изменяются координаты главного - значит простейший способ:
|
|
|||||
|
Регистрация: Jul 2008
Сообщений: 31
|
ну так это не работает
уважаемый swat05 я не понял что вы хотели сказать своим постом Задача в том чтоб что вложенный клип как бы является ограничителем движения основного и когда его координаты принимают определенное значение то основной клип останавливается,для чего здесь выше и был предложен метод localToGlobal() но как им правильно воспользоваться применительно к моей ситуации я не могу пока разобраться |
|
|||||
|
Регистрация: Oct 2009
Сообщений: 101
|
вложеному клипу тяжело быть ограничением для родителя - потому что сам двигается вместе с ним.
если движение происходит на поле сложной формы советую периодически проверять HitTest ом координаты родителя на клипе-подложки (который нарисован нужной формы и лежит под всеми другими клипами оформления) |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 31
|
все кажется разобрался
жаль что никто пример не привел - пришлось долго лазать по хелпу |
|
|||||
|
Регистрация: Aug 2009
Сообщений: 14
|
казалось бы все просто - получил координаты детенка внутри клипа, и прибавил их к координатам родителя - и получил положение hitL_mc на основной сцене. В этом, вероятно, и состоит суть функции localToGlobal().
|
|
|||||
|
Регистрация: Jul 2008
Сообщений: 31
|
в общем да - зато освоил новую для себя операцию
To Fessor : Я поначалу так и начал делать,но дело в том что у меня сверху двигающегося родителя находится маска сложной формы,а родитель состоит из картинок,расположенных горизонтально одна за другой. Все это двигается влево-вправо взависимости от положения мыши относительно центра обьекта-маски.Соответственно самая левая и самая правая картинки являются ограничителями ( я ,честно говоря, не придумал как по-другому сделать ограничения) и из всего родителя видется только то ,что внутри маски В хэлпе прочел про ХитТест - как я понял он срабатывает если хотя бы одна точка из обьекта попадает в область ХитТеста.Получается,что крайние картинки еще не успевают целиком попасть в область маски.Я еще не опытен в программинге (пришлось осваивать ,хоть и не хотелось,но теперь не жалею,так как на сайте который я делаю нет ни одной не программной анимации) и наверняка все можно было сделать по-другому(проще).Был бы очень признателен членам сообщества за информацию о том ,как такое делать правильно Вот Код который у меня получился /*import mx.transitions.Tween; // пытался с помощью Твин решить задачу import mx.transitions.easing.*;*/ var Mousemove = false; var Dir = 0; var Speed = 0; // var Hit = false; // осталось от попытки справиться с помощью хиттеста hitarea_mc.onRollOver = function() { // hitarea_mc лежит выше маски и прозрачен а так же задает область активности мыши Mousemove = true; }; hitarea_mc.onRollOut = function() { Mousemove = false; }; this.onMouseMove = function() { if (_xmouse<mask_mc._x) { Dir = -1; } else { Dir = 1; } }; this.onEnterFrame = function() { Speed = Math.abs(this._xmouse-this.mask_mc._x)/20; //------------------------------------------------------ переменные левой и правой границы var ptXl = this.tn_mc.hitareaL_mc._x; var ptYl = this.tn_mc.hitareaL_mc._y; var ptXr = this.tn_mc.hitareaR_mc._x; var ptYr = this.tn_mc.hitareaR_mc._y; //------------------------------------------------------ точки-обьекты var pointL:Object = {x:ptXl, y:ptYl}; var pointR:Object = {x:ptXr, y:ptYr}; //------------------------------------------------------ перевод в глобальную систему координат tn_mc.hitareaL_mc.localToGlobal(pointL); tn_mc.hitareaR_mc.localToGlobal(pointR); //------------------------------------------------------ анимация движения if ((pointL.x<=this.mask_mc._x) && (pointR.x-this.tn_mc._width>=this.mask_mc._x)) { Speed += 0; } else { Dir *= -1; } if (Mousemove == true) { tn_mc._x += Speed*Dir; } }; На самом деле работает немного не так как хотелось. Хотелось чтоб анимация останавливалась при достижении границ ,а затем возобновлялась при новом движении мыши.Остановить получилось а вот возобновить движение никак(может и можно было , введя какой нить дополнительный логический флажок),но я устал париться и решил просто менять направление движения на противоположное,не останавливая при этом само движение Добавлено через 28 минут Еще подскажите плз возможно ли помещение подобного кода внутрь цикла For или While. Основной клип планируется размножить по вертикали в колличестве 10-12 шт Не размножать же код |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:57. |
|
|
« Предыдущая тема | Следующая тема » |
|
|