Получение графического / видеоклипа по осям x, y из другого фрагмента ролика?

Это должно быть довольно просто, я думаю, я просто не так хорошо знаком с ActionScript, ха-ха.

У меня есть игра, в которой фон движется позади персонажа, который остается в одной позиции на экране. Я относительно новичок в ActionScript 3, но я хочу, чтобы текстовые поля появлялись всякий раз, когда игрок нажимает клавишу над определенными объектами, проходящими в фоновом режиме.

Итак, в основном фон сам по себе представляет собой фрагмент ролика, и у меня есть другая графика и фрагменты ролика внутри mc фона.

Я думал о том, чтобы получить позицию player.x и y, а затем «сравнить» эту позицию (> = и ‹= и т. Д.) С графикой / фрагментом ролика в фоновом режиме. Но я просто не знаю, как получить координаты x и y графических / видеоклипов в фоновом mc.


person Dylan Gallardo    schedule 05.10.2012    source источник
comment
Похоже, вы хотите сравнить, насколько близки друг к другу различные экранные объекты, находящиеся в разных координатных пространствах. Взгляните на .localToGlobal, этот метод преобразует координаты в глобальное пространство, и, конвертируя объекты в фоновом режиме и координаты игрока в глобальные, вы можете сравнивать их друг с другом.   -  person Strille    schedule 07.10.2012


Ответы (1)


Вы можете попытаться настроить таргетинг на свои видеоклипы в фоновом режиме, получив их координаты, а затем удалив их родительскую позицию (фоновый контейнер).

Что-то типа :

var finalXPosition: int = targetMovieClip.x - backgroundContainer.x;

var finalYPosition: int = targetMovieClip.y - backgroundContainer.y;

Вычитая позицию родителя целевого фрагмента ролика из его позиции, вы получаете конечную позицию в координатах родительской области видимости. Это должно сработать для вас, как только ваш персонаж и ваш фоновый контейнер будут расположены на одном уровне списка отображения.

Вот краткая схема того, что я пытаюсь объяснить (пожалуйста, простите за мою неспособность рисовать красивые и откровенные рисунки ^^) enter  описание изображения здесь

Обычно, когда я натыкаюсь на такой случай, я пытаюсь сделать быстрый и даже грязный рисунок, начиная с того, что я хочу, затем разбивая все полезные данные, которые у меня есть для достижения этого результата, вы должны помнить об этом методе и попробовать его. в следующий раз ! :-)

person elFlashor    schedule 06.10.2012
comment
Ах такое подробное объяснение со схемами! Хм ... Боюсь, я все еще не могу это понять, все еще изучаю тонкости ActionScript, так что, возможно, поэтому. Тем не менее, большое спасибо за предложение! Мне просто нужно немного больше объяснений, как на самом деле получить координаты targetMovieClip? Например, что именно мне нужно сделать, чтобы получить позицию моего целевого MovieClip в ActionScript 3? Я думаю, что после того, как я узнаю, я смогу позаботиться обо всем остальном сам. Еще раз спасибо за вашу помощь! - person Dylan Gallardo; 06.10.2012
comment
(чтобы уточнить, мне нужно знать только о том, как получить позицию целевого mc из фонового mc), поскольку мой фон фактически начинается с координаты X = 0! Как удобно! - person Dylan Gallardo; 06.10.2012
comment
Ах, вот чего я боялся :-) Без проблем, я попытаюсь объяснить: во Flash каждый элемент (мувиклип) доступен через его имя .x или .y. Если вы знаете его родительский элемент (здесь, например, фон), вы можете получить доступ к своему мувиклипу с помощью myBackground.myMovieClip: каждый из них (фон, целевой мувиклип) имеет такие свойства, как x, y, ширина, высота ... Итак, в основном, чтобы иметь целевую позицию мувиклипа, вам понадобятся: ваша позиция фона (я полагаю, вы знаете это, если заставите его двигаться) и целевая позиция внутри этого фона (используя точечную нотацию, которую я упомянул выше). - person elFlashor; 06.10.2012
comment
Да, правильно, комментарии пересекаются ^^, скажите мне, можете ли вы использовать точечную нотацию, о которой я говорил вам в предыдущем комментарии: если вы не знакомы с Flash и ActionScript, вам нужно знать, что вложенные фрагменты роликов (фрагменты роликов внутри фрагментов роликов) имеют разное начало координат: каждый раз, когда вы входите на новый уровень вложенности, начало координат сбрасывается в начало контейнера. Пример: фрагмент ролика с номером 10/20 внутри другого фрагмента ролика с номером 50/100 будет на экране с номером 60/120, но его относительное положение будет 10/20, пока вы его не повесите. Достаточно ли я ясен? (Боюсь, что нет ^^) - person elFlashor; 06.10.2012
comment
Ах, ха-ха, да, мне придется все это изучить и провести некоторое тестирование, чтобы полностью разобраться в этом. Но я очень ценю помощь! Возможно, я не собираюсь создавать игру наилучшим образом, но пока все идет хорошо. Некоторые вещи меня немного сбивают с толку, это займет некоторое время, но я пойму! Я отправлю ответ сюда еще раз после того, как я действительно пересмотрю то, что вы сказали, и либо выясню это, либо все еще буду нуждаться в помощи. - person Dylan Gallardo; 06.10.2012
comment
Хорошо, я прошел через это и понимаю, к чему вы меня пытались заставить. Я сталкиваюсь с проблемами, когда на самом деле он не вычитает позицию x из фона и объекта. У меня есть переменная, которая выглядит так: var finalXpos: int = Mybackground.Myobject.x - Mybackground.x; но на самом деле это не вычитает два. Я использовал трассировку, чтобы увидеть, что происходит, и var finalXpos никогда не меняется с 305, хотя background.x меняется. Я что-то попробовал и поставил var backpos = Mybackground.x, но он никогда не обновлял свою позицию, хотя фон явно движется. - person Dylan Gallardo; 06.10.2012
comment
Ах, я получаю ошибку # 1009 при трассировке (Mybackground.Mymovieclip.x). - person Dylan Gallardo; 06.10.2012
comment
Может быть, MyMovieClip не является частью мувиклипа MyBackground? ... Это первое, что приходит мне в голову, когда я вижу эту ошибку. Или, может быть, вы неправильно написали имена, которые используете ...? Часто бывает :-) - person elFlashor; 06.10.2012
comment
Но теперь у меня все работает! После некоторой настройки я настроил его так, чтобы исходное положение объекта отслеживалось вместе с движением сцены. Возможно, это была орфографическая ошибка ... не совсем уверен. Но спасибо за помощь @ bertrand.riche! - person Dylan Gallardo; 06.10.2012