Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.03.2011, 00:56
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 11  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
in4core я поясню. Во-первых, х и у находятся везде вокруг. Я даже не знаю, какие тяжелые наркотики надо употребить, чтобы все х и у вселенной собрались в одном углу. Вы говорите про начало системы координат объекта - точке, которая в самом объекте соответствует координатам (0, 0). Как бы Вы ни крутили объект, Вы крутите только его систему координат. А все содержимое объекта остается в этой его системе координат, на прежних местах. То, что хотите Вы - именно изменить положение и угол СОДЕРЖИМОГО. Ну подумайте сами - ведь если Вы повернете все, что в спрайте, на 90 градусов, не поворачивая и не смещая сам спрайт – это и будет то, чего Вы хотите. Точка (0,0) останется на своем месте, а все видимое повернется на нужный угол. Так?
__________________
Reality.getBounds(this);

Старый 22.03.2011, 01:17
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 12  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 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 . При этом картинка будет не квадратной, тоесть точку привязки картинки нужно всегда помещать в левый верхний ВИДИМЫЙ для нас угол ( я понимаю, о чем вы говорите, что крутится вся система координат и левый верхний угол становится уже нижним и т.д. ) - всегда БЫЛ ВИДИМЫМ левым. Фу...много лишних слов, но надеюсь теперь более понятно

Старый 22.03.2011, 02:00
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 13  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Попробуйте перечитать то, что я написал выше.
__________________
Reality.getBounds(this);

Старый 22.03.2011, 02:12
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 14  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Цитата:
Сообщение от in4core Посмотреть сообщение
как сделать, чтобы поворот прошел, но х и у снова находились в левом верхнем углу
transformPoint + deltaTransformPoint
__________________
Нормально делай — нормально будет!

Старый 22.03.2011, 02:16
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 15  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Wolsh в том то и дело что я перечитал. Вы написали :
Цитата:
Ну подумайте сами - ведь если Вы повернете все, что в спрайте, на 90 градусов, не поворачивая и не смещая сам спрайт – это и будет то, чего Вы хотите. Точка (0,0) останется на своем месте, а все видимое повернется на нужный угол
С этим утверждением я согласен полностью. Но не знаю уже как объяснить повторю - спрайт не участвует в моем вопросе вообще. И не должен. он всегда остается на том месте на котором есть, поворачивается только объект внутри спрайта., но вопрос состоял в том, что бы все модификации были ТОЛЬКО с внутренним объектом, тоесть ПОВЕРНУВ систему координат внутреннего мне нужно вернуть для него прежную систему - ЛИШЬ для него именно, но при этом оставляя поворот. Это возможно сделать ?

Добавлено через 1 минуту
tsarapkabel да да читал, только не понял как использовать. Вы сами пробовали? покажите пожалуйста.

Старый 22.03.2011, 10:16
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 16  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Это возможно сделать ?
просил же перечитать:
Цитата:
В случае детишек все решаемо математикой, но если это собственная графика спрайта (нарисованная в нем Графиксом), ее только перерисовывать.
Вы можете в битмапе повернуть содержимое? А в шейпе? В текстфилде? Или Вы так и не поняли, что переместить А относительно В - то же самое, что переместить В относительно А? Можно "повернуть" битмапдату с шагом 90 градусов (при других углах ее пиксели уйдут в отрицательные координаты, что невозможно). Можно перерисовать графику шейпа или спрайта (я уже боюсь это слово использовать, похоже для Вас существует только один спрайт - Ваш контейнер) в новых координатах. Текст в текстфилде... даже не знаю, может в TLF его получится направить вертикальными строчками))) и можно посмещать отступами)) Но никакие матрицы тут не при делах - то, что нужно трансформировать - содержимое DisplayObject'а, а не DisplayObjectContainer'а. К этому содержимому просто нет доступа как к дисплейному объекту. Поэтому ответ, еще раз - в некоторых случаях можно эмулировать, если можно трансформировать содержимое. Если нельзя - то НЕТ.
__________________
Reality.getBounds(this);

Старый 22.03.2011, 10:34
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 17  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
щас in4core что-нибудь придумает, спакуха! )
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 22.03.2011, 17:53
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 18  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Цитата:
Сообщение от in4core Посмотреть сообщение
Вы сами пробовали? покажите пожалуйста.
Можно на ты. Вечером покажу, если ещё будет актуально
__________________
Нормально делай — нормально будет!

Старый 22.03.2011, 18:13
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 19  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
хотя справился другим методом, битпамдатой, там совсем для другого надо было. Но тема все равно актуальна ибо на будущее знать

Старый 23.03.2011, 02:32
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 20  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Создаём спрайт.
По MOUSE_MOVE смотрим координаты нижней левой точки спрайта.
По клику выводится трейс этой координаты методом transformPoint.
Поворачивается спрайт.
Выводится второй трейс с уже изменёнными координатами.
И в завершении трейс дельты (на сколько изменились координаты).

Код AS3:
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, время: 13:11.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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