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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.06.2011, 07:48
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 1  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
По умолчанию Почему concatenatedMatrix не единична?

Откуда масштаб?

Код AS3:
package Tmp {
	import flash.display.Sprite;
//-----------------------------
	public class Tmp extends Sprite {
//-----------------------------
		private var a:Sprite;
//-----------------------------
		public function Tmp() {
			a = new Sprite();
			trace(transform.matrix.toString());
			trace(transform.concatenatedMatrix.toString());
			trace(a.transform.matrix.toString());
			trace(a.transform.concatenatedMatrix.toString());
		}
	}
}
вывод:
D:\Programms\Flash\Tmp\Src\Tmp.fla:
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=5, b=0, c=0, d=5, tx=0, ty=0)

Старый 04.06.2011, 19:33
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
А если "a" будет иметь размер?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 05.06.2011, 11:37
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 3  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Цитата:
Сообщение от dimarik Посмотреть сообщение
А если "a" будет иметь размер?
Матрица становится вообще нулевой:

Код AS3:
package Tmp {
	import flash.display.Sprite;
//-----------------------------
	public class Tmp extends Sprite {
//-----------------------------
		private var a:Sprite;
//-----------------------------
		public function Tmp() {
			a = new Sprite();
			a.width = 100;
			a.height = 10;
			trace(transform.matrix.toString());
			trace(transform.concatenatedMatrix.toString());
			trace(a.transform.matrix.toString());
			trace(a.transform.concatenatedMatrix.toString());
		}
	}
}
вывод:
D:\Programms\Flash\Tmp\Src\Tmp.fla:
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=0, b=0, c=0, d=0, tx=0, ty=0)
(a=0, b=0, c=0, d=0, tx=0, ty=0)

Старый 05.06.2011, 23:18
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Не надо расстягивать вакуум. С пустыми спрайтами вообще метаморфозы происходят.

Старый 05.06.2011, 23:29
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 5  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Попробуйте, я сейчас не имею под рукой FB.
Код AS3:
package Tmp {
	import flash.display.Sprite;
        import flash.display.Graphics;
 
	public class Tmp extends Sprite {
		public function Tmp() {
			const a:Sprite = new Sprite();
                        const g:Graphics = a.graphics;
                        g.drawRectangle(0, 0, 100, 100); // Начнем иметь размер. Тест.
			trace(transform.matrix.toString());
			trace(transform.concatenatedMatrix.toString());
			trace(a.transform.matrix.toString());
			trace(a.transform.concatenatedMatrix.toString());
		}
	}
}
Добавлено через 11 минут
У меня одного проблема с русской кодировкой в Хроме в тегах?

g.drawRectangle(0, 0, 100, 100); // Начнем иметь размер. Тест.
Нормально отображается только вне тега [AS3/]
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 05.06.2011 в 23:43.
Старый 07.06.2011, 14:52
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 6  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Цитата:
Сообщение от dimarik Посмотреть сообщение
Попробуйте, я сейчас не имею под рукой FB.
Код AS3:
package Tmp {
	import flash.display.Sprite;
        import flash.display.Graphics;
 
	public class Tmp extends Sprite {
		public function Tmp() {
			const a:Sprite = new Sprite();
                        const g:Graphics = a.graphics;
                        g.drawRectangle(0, 0, 100, 100); // Начнем иметь размер. Тест.
			trace(transform.matrix.toString());
			trace(transform.concatenatedMatrix.toString());
			trace(a.transform.matrix.toString());
			trace(a.transform.concatenatedMatrix.toString());
		}
	}
}
Добавлено через 11 минут
У меня одного проблема с русской кодировкой в Хроме в тегах?

g.drawRectangle(0, 0, 100, 100); // Начнем иметь размер. Тест.
Нормально отображается только вне тега [AS3/]
На выходе тоже что и вначале
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=5, b=0, c=0, d=5, tx=0, ty=0)

В firefox текст комментария виден нормально и в теге и вне его.

Старый 07.06.2011, 15:02
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 7  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Ну дык надо его на сцену добавить.

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

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Цитата:
Сообщение от Волгоградец Посмотреть сообщение
Ну дык надо его на сцену добавить.
Код AS3:
package Tmp {
//-----------------------------------------------------------------------------------------------------
	import flash.geom.*;
	import flash.display.*;
//-----------------------------------------------------------------------------------------------------
	public class Tmp extends Sprite {
//-----------------------------------------------------------------------------------------------------
		private var a:Sprite;
//-----------------------------------------------------------------------------------------------------
		public function Tmp() {
 
			const a:Sprite = new Sprite();
			const g:Graphics = a.graphics;
			g.drawRect(0, 0, 100, 100); // Начнем иметь размер. Тест.
			addChild(a);
			trace(transform.matrix.toString());
			trace(transform.concatenatedMatrix.toString());
			trace(a.transform.matrix.toString());
			trace(a.transform.concatenatedMatrix.toString());
		}
	}
}
Да, добавление "а" в список отображения спасает ситуацию.
На выходе получается
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=1, b=0, c=0, d=1, tx=0, ty=0)

Но тогда вопрос: что, объект не добавленный в список отображения с матрицами взаимодействовать не может? Потому как если я сначала захочу переместить его а потом добавить в список - я получу перемещение в пять раз большее чем хотел.

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

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Ну, во-первых, не перемещение, а масштаб. Во-вторых, зачем вообще использовать визуальный объект вне списка отображения - т.е. как только ты добавишь его в дисплей лист - все встанет на свои места. В-третьих, почему не может взаимодействовать с матрицами? Делай какие угодно операции - просто concatenatedMatrix - это совокупность матриц парентов - но т.к. парентов нет - то имеем этот баг - наверняка он в джире есть - лень лезть.

Upd.: залез-таки ) https://bugs.adobe.com/jira/browse/FP-7003


Последний раз редактировалось Волгоградец; 07.06.2011 в 16:32.
Старый 07.06.2011, 17:53
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 10  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Цитата:
Сообщение от Волгоградец Посмотреть сообщение
Ну, во-первых, не перемещение, а масштаб. Во-вторых, зачем вообще использовать визуальный объект вне списка отображения - т.е. как только ты добавишь его в дисплей лист - все встанет на свои места. В-третьих, почему не может взаимодействовать с матрицами? Делай какие угодно операции - просто concatenatedMatrix - это совокупность матриц парентов - но т.к. парентов нет - то имеем этот баг - наверняка он в джире есть - лень лезть.

Upd.: залез-таки ) https://bugs.adobe.com/jira/browse/FP-7003
Я перемещаю объекты за центр (так удобнее т.к. это круглые спарйты) поэтому имея такую матрицу при недобавлвенном объекте я получаю вектор в его центр увеличенным в 5 раз, соответственно при перемещении получаю совершенно не то что нужно.
В общем получается это баг и его нужно учитывать.
Спасибо за ссылку на описание бага.

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

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

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


 


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


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