Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: как отцентрировать программый мувиклип
Flash Zone Forum > Macromedia Flash > Общие вопросы
missouri
Добрый день. Помогите пожалуйста.
Дело вот в чем. Очень просто создать мувик, и потом заставить его двигаться
Для того, чтобы центр мыши приходился на центр мувика, надо просто в режиме радактирования символа его перетащить на маленький такой крестик.
А у меня мувик создается программно во время работы приложения методами moveTo и lineTo. Как мне в этом случае заставить его центрироваться так же?
Если кто знает, подскажите, не поленитесь.
MustLive
missouri

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

Ещё центр объекта (который также носит имя "точка регистрации" и "точка центра") можно задать при создании мувиклипа или другого объекта. Опять же в ручном режиме, когда создаётся новый объект или на основе текущего выделения.

Цитата
у меня мувик создается программно во время работы приложения методами moveTo и lineTo. Как мне в этом случае заставить его центрироваться так же?

Программно же, с помощью action script, изменить центр возможности не имеется. По крайней мере для флеша версии МХ включительно мне такие возможности не ведомы (и хелпу флешевому тоже).

В этом случае люди учитывают центр при работе с объектами.

При создании объектов возможны два случая: 1) "центр" в центре, и 2) "центр" в левом верхнем углу.

Для обоих случаев программно учитывается и распологается объект необходимым образом на экране. При этом при использовании moveTo и lineTo следует помнить, что данными методами учитываются "центры" объектов, к которым они применяются:
Код
myMovieClip.moveTo (x, y)

Parameters

x An integer indicating the horizontal position relative to the registration point of the parent movie clip.

y An integer indicating the vertical position relative to the registration point of the parent movie clip.

Т.е. с учётом "центра" сдвигается объект таким образом, чтобы он распологался в нужном месте экрана. И с учётом последующих moveTo и lineTo и других объектов.

При этом приходится иметь дело с двумя вариантами первоначального расположения "центра". Чтобы избавится от данной мороки возможно использовать метод getBounds.

Код
myMovieClip.getBounds(targetCoordinateSpace)

Parameters

targetCoordinateSpace The target path of the Timeline whose coordinate system you want to use as a reference point.

Returns

An object with the properties xMin, xMax, yMin, and yMax.

Например чтобы расположить два клипа clip и clip2 бок о бок, необходимо:
Код
clipBounds = clip.getBounds(_root);
clip2._x = clipBounds.xMax;
tiHo
можно так попробывать:

onMouseDown=function(){
clip._x = _xmouse - clip._width/2
clip._y = _ymouse - clip._height/2
}


скрипт писать на кадр, а не на клип.

при нажатии мыши, клип(clip) будет центрироватся под курсором.
tiHo
спустя 1 год и 3 месяца, понял что лучше всетаки мне было написать не onMouseDown а onMouseMove biggrin.gif laugh.gif

PS> ссылку на пост нашел только что из другого поста.. поетому с "небольшим" опозданием заявляю о своей неточности smile.gif
MustLive
Цитата
спустя 1 год и 3 месяца, понял что лучше всетаки мне было написать не onMouseDown а onMouseMove

Эстонцы с радостью примут тебя в свои ряды biggrin.gif

Цитата
ссылку на пост нашел только что из другого поста

Это я специально сослался на эту тему из другого поста smile.gif, чтобы ты смог заного пересмотреть свой код.
nikitar
Вообще, этот путь не пойдёт, потому что, например, при вращении мувиклипа вокруг своего центра нужно, чтобы центр был именно в центре мувиклипа, а не в верхней левой точке. Поэтому советую поступить так. Вручную создать муивклип с регистрацией в центре, затем его убрать в библиотеку, прописать правильно linkage и вызвав в ролик, когда это нужно рисовать прямо в нём.
Всё равно для того, чтобы рисовать обычно создают новый мувиклип, а вы рисуйте в этом, а потом вращайте его как надо, уже вокруг своего центра.
MustLive
Цитата
Вообще, этот путь не пойдёт, потому что, например, при вращении мувиклипа вокруг своего центра нужно, чтобы центр был именно в центре мувиклипа, а не в верхней левой точке. Поэтому советую поступить так.

В этом случае, когда нужно поворачивать мувиклип, лучше создать мувик вручную, как ты верно заметил. Но, nikitar, если ты почитаешь мой первый ответ в этой теме, ты увидешь, что я уже об этом писал wink.gif (и missouri об этом писал).

Так что этот вариант обсуждался изначально. Но вопрос был поставлен об альтернативе ручного создания мувиклипов. А при программном создании (без предваритального создания мувика и помещения в библиотеку), можно воспользоватья лишь программными методами. О которых писал я и Саша - с помощь getBounds или clip._width с clip._height.
Русская версия IP.Board © 2001-2009 IPS, Inc.