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

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

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

Регистрация: Jan 2011
Сообщений: 6
По умолчанию Программное отражение с полупрозрачностью

Добрый день, всем.

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

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

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

Код 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; сделать маску видимой - то видно что она попадает на то место что нужно. И отражение появляется там где нужно. Но применить одно-к другому никак не получается.

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


Последний раз редактировалось Wolsh; 24.02.2011 в 11:46.
Старый 24.02.2011, 08:35
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Оформите тегами [as3].
http://silin.su/#AS2/reflection вот у Силина похожее, портировать только правильно нужно.
__________________
тут я

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
barlog2000, для оформления своего кода надо использовать теги [code][/code]

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

Старый 24.02.2011, 15:13
barlog2000 вне форума Посмотреть профиль Отправить личное сообщение для barlog2000 Найти все сообщения от barlog2000
  № 4  
Ответить с цитированием
barlog2000

Регистрация: Jan 2011
Сообщений: 6
Прошу прощения, насчет отделения тэгами не знал.

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

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

Мистика

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

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

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

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

Теги
AS3

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

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


 


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


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