Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Программное отражение с полупрозрачностью (http://www.flasher.ru/forum/showthread.php?t=151189)

barlog2000 24.02.2011 02:51

Программное отражение с полупрозрачностью
 
Добрый день, всем.

Наткнулся я на стену и бьюсь об нее уже второй день. Может кто подскажет?
Есть у меня некий объект. Нужно получить его отражение. Но отражение бледное и полупрозрачное.
И не всего объекта, а части прилегающей к отражающему объекту.

В общем, чтобы не усложнять, пусть будет просто полупрозрачное отражение.

Делаю это так:

Код AS3:

var reflectBD:BitmapData=new BitmapData(100,60,true,0); // DitmapData для картинки отражения
var reflectBitmap:Bitmap=new Bitmap(reflectBD);
reflectBitmap.x=0;
reflectBitmap.y=143;
reflectBitmap.scaleY=-1;
var moveMatrix:Matrix=new Matrix(1,0,0,1,0,-40); // матрица копирования картинки
 
// Дальше настройка маски прозрачности
var refMask:Shape = new Shape();
var matr:Matrix = new Matrix();
matr.createGradientBox(100, 60, getRadians(270), 0, 0);
refMask.graphics.beginGradientFill(GradientType.LINEAR,[0x000000, 0xFFFFFF],[0,1],[50,255],matr);
refMask.graphics.drawRect(0, 0,100, 60);
refMask.graphics.endFill();
refMask.cacheAsBitmap=true;
refMask.x=0;
refMask.y=92;
this.addChild(refMask);
reflectBitmap.mask=refMask;
this.addChild(reflectBitmap);

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

Код AS3:

for(i=0;i<10;i++)
{
reflectBD.draw(this,moveMatrix);
}

И, естественно, никакой полупрозрачности я не получаю. Не получаю вообще никакой картинки. В отражении пустота.
Если закоментировать reflectBitmap.mask=refMask; сделать маску видимой - то видно что она попадает на то место что нужно. И отражение появляется там где нужно. Но применить одно-к другому никак не получается.

В чем тут дело, может кто поймет? Спасибо большое заранее.

КорДум 24.02.2011 08:35

Оформите тегами [as3].
http://silin.su/#AS2/reflection вот у Силина похожее, портировать только правильно нужно.

Wolsh 24.02.2011 11:45

barlog2000, для оформления своего кода надо использовать теги [code][/code]

Добавлено через 6 минут
У Силина есть и на AS3 - http://silin.su/#AS3/gadgets/reflection

barlog2000 24.02.2011 15:13

Прошу прощения, насчет отделения тэгами не знал.

Посмотрел пример Силина, ничего не дало. В общем то примеров подобных видел уже много,
но хоть убей не могу найти отличий. Думал что профи заметят что не так.

Самое интересное что предыдущая версия моего кода (с небольшими отличиями) работала, но очень специфически.
На 1 компьютере есть отражение, на другом нет. Запускаю IE - отражение есть,
запускаю Оперу - отражения нет. Хотя версия Флэша везде одна и таже.

Мистика

В любом случае спасибо за внимание.

Добавлено через 2 часа 27 минут
Вопрос решен.
Глупо. На одном из объектов не стоял cacheAsBitmap.

Только непонятно почему на некоторых компьютерах всетаки отражение показывалось.


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

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