PDA

Просмотр полной версии : меняет ли координаты рисунка в клипе - его отражение?


viktorami
17.01.2012, 17:28
есть movie clip по координатам 0;0;
в него была добавлена Bitmap
и дальше я двигаю два таких клипа задачка стоит отследить их "столковение"
все прекрастно проиходит. Но лишь до тех пор пока к одному из клипов не применяется отражение через scaleX=-1 - после этого в той же самой процедуре отслеживания столковения это самое "столкновение" фиксируется когда уже визуально рисунки налезли друг на друга.
вывод один: реальные координаты картинки перестали быть 0;0 что то та случилось при отражени. но что именно? подскажите пожалуйста.

Zebestov
17.01.2012, 17:31
меняет ли координаты рисунка в клипе - его отражение?
Не меняет.

viktorami
17.01.2012, 17:39
ну а почему тогда изменилось поведение? яничего кроме отражения не делал то есть я провел прямой эсперимент: задал координаты х одного клипа там, где оканчивается х другого+ его ширина. - налезли!

Zebestov
17.01.2012, 17:48
Нужен код. Клипа, рисунка в нем, проверки столкновений.

viktorami
17.01.2012, 17:54
а есть какой нибудь способ увидеть "фактические размеры" movie clip - то есть он же по факту безразмерный(прозрачный) вот загрузил я в него картинку еще что то. кто его знает какой он. можно как то получить то визуально. может фон закрасить или как то так???

-De-
17.01.2012, 18:01
Есть getBounds() (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#getBounds%28%29). По-моему проблемы от непонимания того, что графика клипа может находиться относительно нуля клипа где угодно. И при отражении она отражается как раз относительно нуля (который где угодно может быть).

viktorami
17.01.2012, 18:03
я когда добавлял картинку в клип - укзал координаты картинки - ноль ноль.

Добавлено через 2 минуты
эта функция у меня выдала такие координаты у отраженного movieclip
x=-103.25, y=-57.25, w=196, h=202.25
но почему минус то?

Zebestov
17.01.2012, 18:09
Потому что getBounds() не чувствителен к скейлам и такому прочему. Он не знает, что флаг на самом деле по прежнему имеет точку привязки на флагштоке, просто ветер подул в другую сторону. Он просто говорит, что теперь координаты обрамляющего флаг прямоугольника сместились, ширина осталась.

viktorami
17.01.2012, 18:22
я сейчас возьму и визуально привяжу к координате к - какой нибудь элемент. а потом посмотрю - будет ли он по одному краю с картинкой.

Добавлено через 2 минуты
так вот!!! когда картинка отразилась она ИЗМЕНИЛА ТАКИ СВОЕ ПОЛОЖЕНИЕ В КЛИПЕ НА СВОЮ ШИРИНУ!!! а вы пишите - нет. но все равно - спасибо)

Zebestov
17.01.2012, 18:46
А у меня не изменила )

var s:Sprite = new Sprite();
var b:Bitmap = new Bitmap(new BitmapData(100, 100));
addChild(s);
s.addChild(b);
trace(b.x); // ноль
s.scaleX = -1;
trace(b.x); // ноль

Hidest
17.01.2012, 18:50
Видимо, товарищ делает отражение самой картинки, а не клипа, ее содержащего.

viktorami
17.01.2012, 18:52
не а. я отражал клип!

Добавлено через 51 секунду
ладно. сейчас буду разбиратся. напишу что получится

Zebestov
17.01.2012, 18:56
Видимо, товарищ делает отражение самой картинки, а не клипа, ее содержащего.
меняем s.scaleX = -1; на b.scaleX = -1; и имеем тот же результат.

Hidest
17.01.2012, 22:01
Я не спорю, просто хотелось разобраться, что же менял все же автор, а то показания были протеворечивые :)

viktorami
17.01.2012, 23:08
нувот. нашел причину непонятную!!!
почему до отражения - нулевой координатой внутри movieclip считается левая точка - а после отражения- правая???

Aquahawk
17.01.2012, 23:18
Да всё понятно.
0.0 - точка применения трансвормации. Когда вы сделали scaleX=-1 вы как будто перевернули страницу, сначала у вас порешок от этой страницы был слева а потом стал справа.

viktorami
17.01.2012, 23:22
и самое офигеть - после отражения раньше координата икс у САМОГО movie clip(ну отображается же он в кадре по координатам) считалась слева направо а теперь координата Х - ЭТО ПРАВАЯ ТОЧКА(((
ну что ж такое! зачем они это понаделали. нельзя было отразить содержимое просто да и оставить все как есть. зачем координаты - с ними чехарду устраивать(

Aquahawk
17.01.2012, 23:44
Да вы не отражаете. Вы делаете отрицательный скейл. При скейле внутри всё как работало так и работает, а потом просто отражается. Возьмите тетрадь и поставьте зеркало и смотрите на него, и попробуйте писать и двигать карандаш. Вы увидите именно это.

viktorami
18.01.2012, 00:13
ясно.