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

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

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

Регистрация: Jan 2009
Сообщений: 7
Question маска vs кнопка - баг?

писал плеер для сайта и захотел сделать красивые отражения кнопок)

написал код, который делает копию объекта, отражает, и накладывает на отражение альфа-маску с градиентом (от непрозрачного черного к прозрачному белому).

долго мучался, пока не заметил, что для кнопок прозрачность маски как-то криво работает, при этом для мувиклипов нормально.. сделал скрины...

...или маски вообще неприменимы к кнопкам?)

дабавлено: кстати пробовал применять к маске не градиент, а Blur.. результат аналогичен
Изображения
       


Последний раз редактировалось beatstream; 21.04.2009 в 18:32.
Старый 21.04.2009, 18:56
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Класс Button не имеет метода setMask(). Используте мувиклипы с состояниями _up, _over и _down вместо кнопок.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 21.04.2009, 19:00
ОльгаЮрьевна вне форума Посмотреть профиль Отправить личное сообщение для ОльгаЮрьевна Посетить домашнюю страницу ОльгаЮрьевна Найти все сообщения от ОльгаЮрьевна
  № 3  
Ответить с цитированием
ОльгаЮрьевна
 
Аватар для ОльгаЮрьевна

Регистрация: Mar 2008
Адрес: Санкт-Петербург
Сообщений: 171
Отправить сообщение для ОльгаЮрьевна с помощью ICQ
... это не к маске, а к картинке: отражение всегда немного темнее оригинала

Старый 21.04.2009, 19:23
beatstream вне форума Посмотреть профиль Отправить личное сообщение для beatstream Найти все сообщения от beatstream
  № 4  
Ответить с цитированием
beatstream

Регистрация: Jan 2009
Сообщений: 7
2dimarik: спасибо, так и думал *CRAZY*

2ОльгаЮрьевна: да, спасибо) мне не до красоты было, лишь бы разобраться...

Старый 21.04.2009, 19:45
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 5  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
beatstream, обратите внимание на метод draw() класса BitmapData. Вполне вероятно с его помощью можно получить изображение кнопки. Что-то вроде этого
Код AS1/AS2:
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Matrix;
 
var bitmapData:BitmapData = new BitmapData(myButton._width, myButton._height, true, 0x00000000);
 
// Flip vertical matrix
var matrix:Matrix = new Matrix(1, 0, 0, -1);
 
bitmapData.draw(myButton, matrix, null, 'normal', new Rectangle(0, 0, myButton._width, myButton._height), true);
 
var mc:MovieClip = this.createEmptyMovieClip('reflection', this.getNextHighestDepth() );
mc.attachBitmap(bitmapData, 0);
 
var mask:MovieClip = this.createEmptyMovieClip('mask', this.getNextHighestDepth() );
 
// Gradient mask. Stolen from Flash Help beginGradientFill example 
var colors:Array = [0xFF0000, 0x0000FF];
var fillType:String = "radial";
var alphas:Array = [100, 100];
var ratios:Array = [0, 0xFF];
var spreadMethod:String = "reflect";
var interpolationMethod:String = "linearRGB";
var focalPointRatio:Number = 0.9;
 
matrix = new Matrix();
matrix.createGradientBox(100, 100, Math.PI, 0, 0);
mask.beginGradientFill(fillType, colors, alphas, ratios, matrix, spreadMethod, interpolationMethod, focalPointRatio);
mask.moveTo(0, 0);
mask.lineTo(mc._width, 0);
mask.lineTo(mc._width, mc._height);
mask.lineTo(0, mc._height);
mask.lineTo(0, 0);
mask.endFill();
 
mc.setMask(mask);
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 22.04.2009 в 11:41.
Старый 21.04.2009, 23:16
beatstream вне форума Посмотреть профиль Отправить личное сообщение для beatstream Найти все сообщения от beatstream
  № 6  
Ответить с цитированием
beatstream

Регистрация: Jan 2009
Сообщений: 7
да, уже изучаю)

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

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

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


 


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


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