![]() |
|
||||||||||
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
in4core я поясню. Во-первых, х и у находятся везде вокруг. Я даже не знаю, какие тяжелые наркотики надо употребить, чтобы все х и у вселенной собрались в одном углу. Вы говорите про начало системы координат объекта - точке, которая в самом объекте соответствует координатам (0, 0). Как бы Вы ни крутили объект, Вы крутите только его систему координат. А все содержимое объекта остается в этой его системе координат, на прежних местах. То, что хотите Вы - именно изменить положение и угол СОДЕРЖИМОГО. Ну подумайте сами - ведь если Вы повернете все, что в спрайте, на 90 градусов, не поворачивая и не смещая сам спрайт – это и будет то, чего Вы хотите. Точка (0,0) останется на своем месте, а все видимое повернется на нужный угол. Так?
__________________
Reality.getBounds(this); |
|
|||||
|
[+4 06.05.14]
|
Хм. нет не так. Есть спрайт, в нем картинка. картинка на 100,100 . Создаем хелпер спрайт 10*10. Пробуем поставить его на координату картинка.x картинка.y - трейсим - выводит 100-100. Круто все верно. Теперь поворачиваем картинку в спрайте на 90 градусов. ( предположим что картинка была квадратной ) пробуем поместись хелпер на картинка.x картинка.y = выводит 200 - 100. Хотя левый угол картинки досих пор у нас в 100-100. А нам надо чтобы после трейса картинка.x картинка.y - мы увидили 100-100, что до по ворота, что после, из рассчета того, что точка поворота была в центре картинки. А сейчас до поворота центральной точки КВАДРАТНОЙ картинки, мы видим 100-100, после поворота 200-100, при следующем повороте 200-200, при следующем 100 - 200 - и при последнем УРА 100-100. а надо всегда 100-100 . При этом картинка будет не квадратной, тоесть точку привязки картинки нужно всегда помещать в левый верхний ВИДИМЫЙ для нас угол ( я понимаю, о чем вы говорите, что крутится вся система координат и левый верхний угол становится уже нижним и т.д. ) - всегда БЫЛ ВИДИМЫМ левым. Фу...много лишних слов, но надеюсь теперь более понятно
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Попробуйте перечитать то, что я написал выше.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
|
Цитата:
__________________
Нормально делай — нормально будет! |
|
|||||
|
[+4 06.05.14]
|
Wolsh в том то и дело что я перечитал. Вы написали :
Цитата:
Добавлено через 1 минуту tsarapkabel да да читал, только не понял как использовать. Вы сами пробовали? покажите пожалуйста. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
|
щас in4core что-нибудь придумает, спакуха! )
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
|
Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
|
Можно на ты. Вечером покажу, если ещё будет актуально
![]()
__________________
Нормально делай — нормально будет! |
|
|||||
|
Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
|
Создаём спрайт.
По MOUSE_MOVE смотрим координаты нижней левой точки спрайта. По клику выводится трейс этой координаты методом transformPoint. Поворачивается спрайт. Выводится второй трейс с уже изменёнными координатами. И в завершении трейс дельты (на сколько изменились координаты). package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.geom.Matrix; import flash.geom.Point; import flash.text.TextField; import flash.text.TextFieldAutoSize; public class DeltaPoint extends Sprite { private var t:TextField = new TextField(); private var sprite:Sprite = new Sprite(); public function DeltaPoint() { t.border = true; t.autoSize = TextFieldAutoSize.LEFT; addChild(t); stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove); stage.addEventListener(MouseEvent.CLICK, onClick); //var sprite:Sprite = new Sprite(); sprite.graphics.lineStyle (1, 0x0); sprite.graphics.beginFill (0xCC99BB); sprite.graphics.drawRect (0, 0, 150, 35); sprite.mouseEnabled = false; addChild (sprite); sprite.x = sprite.y = 150; } private function onMove (event:MouseEvent):void { //Для проверки координаты выводим в textField t.text = event.localX + " " + event.localY; } private function onClick (event:MouseEvent):void { var matrix:Matrix = sprite.transform.matrix; //trace показывает, где в данный момент находится точка нижнего левого угла trace (matrix.transformPoint (new Point (0, 34))); //(x=150, y=184) var angle:Number = 90*Math.PI/180; matrix.a = Math.cos(angle); matrix.b = Math.sin(angle); matrix.c = -Math.sin(angle); matrix.d = Math.cos(angle); sprite.transform.matrix = matrix; //transformPoint показывает, куда сместилась та самая точка trace (matrix.transformPoint (new Point (0, 34))); // (x=116, y=150) //deltaTransformPoint показывает, на сколько изменились координаты trace (matrix.deltaTransformPoint(new Point (0, 34))); // (x=-34, y=2.0818308014980413e-15) } } }
__________________
Нормально делай — нормально будет! |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|