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

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

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

Регистрация: Feb 2009
Сообщений: 141
По умолчанию Размер объекта после маскирования

Приветствую!

Проблема в следующем, есть замаскированный объект:
Нативно рисуется незамысловатый узор начиная с координаты -50 до 150 и перерисовывается со смещением узора каждый кадр.
Узор маскируется прямоугольником с координатами от 0 до 100 (ширина), т.е диапазоны -50 - 0 и 100 - 150 отбрасываются. В итоге, после маскирования объект получается шириной 100px, но свойство width показывает 200, а мне нужно 100. Причем даже после scrollRect шириной в 100px, width все равно выдает 200. Далее этот объект чилдится в контейнер размером 1200 шириной и становится он естественно шириной 1250, т. к. контейнер считает что в области -50 - 0 что-то есть, мне очень нужно этого избежать, т.е. конкретно в данном случае контейнер должен обязательно остаться прежним в ширину. Подскажите, пожалуйста, как решить эту проблему?

Старый 16.02.2014, 03:36
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 2  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
scrollRect помогает, но только с задержкой в 1 кадр
попробуйте проверить ширину и высоту через кадр или 100 милисекунд, например
__________________
сайт, vk

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

Регистрация: Feb 2009
Сообщений: 141
Через кадр уже поздно будет, нужно сразу, объект добавляется в самописный контейнер Box, наподобие флексовского с автопозиционированием и из-за некорректных размеров все катится к черту.
В общем придется изменять алгоритм отрисовки узора, чтобы он был в рамках координат маски

Я предполагал, что маскированный объект изменяется по размеру маски, а это не так, что в принципе тоже логично, т.к. маска влияет только на визуализацию.

Если кому интересно, нашел фантастическое решение проблемы:

Код AS3:
new BitmapData(1,1).draw(displayObject);
FP будет вынужден обновить для этого объекта реальный размер прямо в текущем кадре. Я поместил это в глобальную функцию, которую можно дергать сразу после изменения scrollRect

Код AS3:
package
{
	import flash.display.BitmapData;
	import flash.display.IBitmapDrawable;
 
	public function updateRealSize(displayObject:IBitmapDrawable):void
	{
		new BitmapData(1,1).draw(displayObject);
	}
}
Код AS3:
...
_fill.scrollRect = new Rectangle(0, 0, _width, _height);
updateRealSize(_fill);
...


Последний раз редактировалось Vreden; 16.02.2014 в 13:02.
Старый 16.02.2014, 20:26
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Узор растровый или векторный?
__________________
משיח לא בא
משיח גם לא מטלפן

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

Регистрация: Feb 2009
Сообщений: 141
Векторный, а какое это имеет значение?

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Растровый можно отрисовать в Graphics с помощью beginBitmapFill().
__________________
משיח לא בא
משיח גם לא מטלפן

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

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

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


 


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


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