Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   меняет ли координаты рисунка в клипе - его отражение? (http://www.flasher.ru/forum/showthread.php?t=174079)

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(). По-моему проблемы от непонимания того, что графика клипа может находиться относительно нуля клипа где угодно. И при отражении она отражается как раз относительно нуля (который где угодно может быть).

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

А у меня не изменила )
Код AS3:

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

Цитата:

Сообщение от Hidest (Сообщение 1057522)
Видимо, товарищ делает отражение самой картинки, а не клипа, ее содержащего.

меняем
Код AS3:

s.scaleX = -1;

на
Код AS3:

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

ясно.


Часовой пояс GMT +4, время: 15:10.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.