![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2009
Сообщений: 425
|
Приветствую!
Столкнулся с необычной проблемой: растрированное изображение (имеющее области прозрачности), применяемое в качестве маски ведёт себя тупо как прямоугольник, залитый сплошным цветом (прозрачности не учитываются)... /*Некий класс, описывающий уровень... 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; } /*Класс, экземпляром которого является _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. |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Это косяк флеш плеера. В версии 10.0 было с точностью до наоборот. Такой косяк появился с версии 10.1
|
![]() |
![]() |
Часовой пояс GMT +4, время: 19:12. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|