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

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

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

Регистрация: Nov 2009
Сообщений: 425
По умолчанию маска из Bitmap

Приветствую!
Столкнулся с необычной проблемой: растрированное изображение (имеющее области прозрачности), применяемое в качестве маски ведёт себя тупо как прямоугольник, залитый сплошным цветом (прозрачности не учитываются)...
Код AS3:
/*Некий класс, описывающий уровень...
skip
где-то после добавления на экран в одном из методов отрисовываю карту слоя (пример утрирован - не суть)*/
var floorTilesMaskSprite:Sprite = new Sprite(); //Временный спрайт куда при отрисовке карты пихаю составные части карты
for (var i:int = 0; i < 20; i++){
    for (var j:int = 0; j < 20; j++){
         var tile:Tile = new Tile(); /*Не вдаваясь в дебри будем считать что Tile отвечает и за графику и за 
свойства (на деле мухи отдельно, но для примера не существенно)*/
         var position:Point = new Point(j*X_SIZE, i*Y_SIZE);
         tile.getPosition(position);
         _leyer01.addTileToFloor(tile); /*_layer01 - экземпляр класса работающего с логикой (можно 
перемещаться дальше или нет, провалимся на слой ниже или нет etc)... ну да, графику я тоже к нему 
прикрутил :rolleyes: */
         if (Math.random() > .3) {
             var tilesMask:TilesMask = new TilesMask();
             tilesMask.getPosition(position);
             floorTilesMaskSprite.addChild(tilesMask); //На деле добавляется графика с контуром плитки
         }
    }
}
_leyer01.addShadowMask(restrize (floorTilesMaskSprite, floorTilesMaskSprite.width + X_SIZE, floorTilesMaskSprite.height + Y_SIZE));
 
//в этом же классе живёт метод для растризации (ну да, да... сам знаю...)
private function rastrize(vector:DisplayObject, width:Number, height:Number):Bitmap {
	var bmpData:BitmapData = new BitmapData(width, height, true, 0x000033);
	bmpData.draw(vector);
	var bmp:Bitmap = new Bitmap(bmpData);
	return bmp;
}
Код AS3:
/*Класс, экземпляром которого является _layer01 из вышеуказанного класса
skip
тут определены спрайты под плитки, спрайт под маску; определены публичные методы по добавлению в
каждый из спрайтов объектов... В методе, где добавляется объект в спрайт с маской параллельно вызывается
метод "переприменяющий" маскирование applyMask() - нужно, т.к. со временем маска может измениться
(некий объект упадёт на более нижний слой и тем самым станет частью пола текущего слоя)*/
private function applyMask():void {
	_shadows.cacheAsBitmap = true;
	_shadowsMask.cacheAsBitmap = true;
	_shadows.mask = _shadowsMask;
}
Если не растрировать - маска работает корректно,.. но и растрируется всё корректно (проверял посредством вывода маскирующего спрайта как обычного - адекватно растрированная картинка там где и должна быть)...

P.S. sorry за быдлокод

UPD: картинка для наглядности =))
Изображения
 
__________________
можно, даже нужно на "ты", - Я лишён предрассудков относительно "Вы" =))
но чур без фамильярностей...


Последний раз редактировалось Contemplator; 03.06.2011 в 16:59.
Старый 03.06.2011, 20:00
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 2  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Это косяк флеш плеера. В версии 10.0 было с точностью до наоборот. Такой косяк появился с версии 10.1

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

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

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


 


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


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