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

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

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
это решилобы часть вопросов.
Ага, так же как поиск по форуму.

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

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Присоединюсь к вопросу автора.

alatar, просто с матрицами, да не просто
К примеру я с успехом применяю матрицу для смещений всяких. Вращение тоже работает ок - пматрицей ноль клипа передвинул и ок.

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

Старый 28.12.2010, 19:24
passertm вне форума Посмотреть профиль Отправить личное сообщение для passertm Найти все сообщения от passertm
  № 13  
Ответить с цитированием
passertm
[+1 28.12.10]
[+1 29.12.10]
 
Аватар для passertm

Регистрация: Aug 2006
Сообщений: 107
Цитата:
Сообщение от alatar Посмотреть сообщение
Ага, так же как поиск по форуму.
ну. согласитесь, поиск это не faq. очень часто бывают темы которые то ли не знаешь как искать. то ли поиск выдает кучу тем не относяшихся к делу

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
А вот со скейлами полдня промучался и ничего не получилось.
Просто надо учесть, что линейные размеры при увеличении меняются и скорректировать координаты.

Код AS3:
package
{
	import flash.display.DisplayObject;
	import flash.display.Graphics;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.MouseEvent;
	import flash.geom.Matrix;
	import flash.geom.Point;
	import flash.net.URLRequest;
	import flash.system.System;
 
	public class asTest extends Sprite
	{
		private var _sprite:Sprite = new Sprite();
 
		public function asTest()
		{
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
 
			draw(_sprite.graphics);
 
			_sprite.x = 100;
			_sprite.y = 100;
 
			addChild(_sprite);
			_sprite.addEventListener(MouseEvent.CLICK, scaleAroundPoint);
		}
 
		private function draw(gr:Graphics):void
		{
			gr.beginFill(Math.random()*0xFFFFFF);
			gr.drawRect(0, 0, 50, 50);
			gr.endFill();
		}
 
		private var scale:Number = 2;
 
		private function scaleAroundPoint(event:MouseEvent):void
		{
			scale++;
 
			var target:DisplayObject = DisplayObject(event.currentTarget);
 
			//точка вращения
			var transformPoint:Point = new Point(25, 25);
 
			var unscaledWidth:Number = target.width / target.scaleX;
			var unscaledHeight:Number = target.height / target.scaleY;
 
			var offsetX:Number = transformPoint.x / unscaledWidth;
			var offsetY:Number = transformPoint.y / unscaledHeight;
 
			/* корректируем координаты объекта.
			Необходимо восстановить координаты объекта относитльно
			точки вращения без увеличения */
			var targetX:Number = target.x + target.width * offsetX - target.width * offsetX / target.scaleX;
			var targetY:Number = target.y + target.height * offsetY - target.height * offsetY / target.scaleY;
 
			var m:Matrix = new Matrix();
 
			m.translate(-transformPoint.x, -transformPoint.y);
			m.scale(scale, scale);
			m.translate(transformPoint.x, transformPoint.y);
			m.translate(targetX, targetY);
 
			target.transform.matrix = m;
		}
	}
}

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

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Спасибо Кэп, я именно так и сделал

Вопрос не про "подогнать по пикселам после скейла", а в том что если делать это в ИДЕ - то смена центра влияет и на центр скейла.
Кодом у меня это сделать не получилось, кроме как подогнать так как ты привел в своем примере.
__________________
Кто к нам с чем для чего - тот у нас того от того.

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
FlashIDE просто сдвигает содержимое в контейнере относительно 0,0. Что значит не получилось кодом?

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

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Не получилось - значит при любых раскладах скейлится из лево-верха - вправо-низ.
И кроме как центровать в процессе - ниче не придумалось.

Хотя я так полагал что скейл работает из точки нуля мувика (черненький крестик в ИДЕ). И вот знатоки вопрос:
- Это я неправильно думаю про скейл и он при любых раскладах таки работает из лево-верха, и пофиг где ноль
- или я прав насчет скейла, но все танцы с матрицей на самом деле делают что-то другое, но не сдвигают ноль
- или я просто что-то не так делал, и скейл у нас должен быть из точки нуля, и матрица должна свигать именно этот ноль.
__________________
Кто к нам с чем для чего - тот у нас того от того.

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

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

Старый 29.12.2010, 01:43
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 19  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Все трансформации работают относительно 0,0 клипа (включая скейл и матрицу).
Матрица сдвигает объект, а не его 0,0.

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

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
А не все ли равно, сдвинуть ноль относительно объекта (что и звучит то абсурдно), или сдвинуть объект относительно нуля?

В итоге этих действий мы получим(ну это как я себе понимаю) один результат - ноль будет в определенной точке клипа (не лево-верх клипа, но что-то другое).
__________________
Кто к нам с чем для чего - тот у нас того от того.

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:33.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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