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

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

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

Регистрация: Jun 2008
Сообщений: 204
По умолчанию Как сделать такой эффект?

Как сделать эффект радиального маскирования как на скрине (фейсбучная игра Criminal Case)?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Такой? http://flasher.ru/forum/showpost.php...21&postcount=8
__________________
Reality.getBounds(this);

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

Регистрация: Jun 2008
Сообщений: 204
Нет именно прямоугольный, окружности я и сам нарисую ) а вот прямоугольник с округлыми углами и с вырезом нет.

Старый 26.08.2013, 23:18
chamele0n вне форума Посмотреть профиль Отправить личное сообщение для chamele0n Посетить домашнюю страницу chamele0n Найти все сообщения от chamele0n
  № 4  
Ответить с цитированием
chamele0n
[+4 24.04.13]
[+4 20.04.13]

Регистрация: Feb 2013
Адрес: Seireitei
Сообщений: 176
оО дык наложи маску на окружность с
Цитата:
Сообщение от shaman4d Посмотреть сообщение
прямоугольник с округлыми углами и с вырезом
__________________
Personal Page
$demo = $away3d + $bullet + $pathfinding;

Старый 26.08.2013, 23:21
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 5  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Скомбинируйте. Создайте окружность и прямоугольник. Примените для окружности в качестве маски - прямоугольник. Заверните эти два объекта в один и применяйте уже его в качестве маски для ваших потребностей.

Старый 26.08.2013, 23:25
shaman4d вне форума Посмотреть профиль Отправить личное сообщение для shaman4d Найти все сообщения от shaman4d
  № 6  
Ответить с цитированием
shaman4d
 
Аватар для shaman4d

Регистрация: Jun 2008
Сообщений: 204
о! спасибо!

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
зачем комбинировать то? "Круглую" маску применить к целевому прямоугольнику. Ну сделать ее большого размера, чтобы весь покрывала. Маску зачем маскировать? О__о Её ж не будет видно все-равно))

Название: throbberMask.png
Просмотров: 475

Размер: 8.4 Кб
__________________
Reality.getBounds(this);

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

Регистрация: Jan 2011
Сообщений: 200
Код AS3:
public class Throbber extends Sprite 
	{
		private static const RAD180:Number = -Math.PI;
		private static const RAD:Number = 180 / RAD180;
		private var _g:Graphics;
		private var _outerRadius:Number;
		private var _innerRadius:Number;
		private var _color:uint;
		private var _center:Number;
		private var _controlOutRadius:Number;
		private var _controlInnRadius:Number;
        private var square:Sprite = new Sprite();
 
		public function Throbber(outerRadius:Number, innerRadius:Number, color:uint) 
		{
			_color = color;
			_innerRadius = innerRadius;
			_outerRadius = outerRadius;
			_g = this.graphics;
			_center = _outerRadius / 2;
            square.graphics.beginFill(0, 0);
            square.graphics.drawRoundRect(-10, -10, 53, 53, 10);
            addChild(square);
		}
 
		public function update(rotation:Number, arc:Number) : void
		{
			_g.clear();
 
			if (arc == 0)
			{
				return;
			}
 
			rotation /= RAD;
			arc /= RAD;
 
			// alias arc to 360 gradians
			arc = arc % (RAD180 * 2);
 
			// calculate fragments (18 gradians max at one step for cute round curve)
			var frags:Number = Math.abs( Math.ceil(arc * 10 / RAD180) ); 
			if (arc < 0) frags += 1;
			var fragAngle:Number = arc / frags;
 
			// control points radius
			_controlOutRadius = _outerRadius / Math.cos( -fragAngle / 2);
			_controlInnRadius =  _innerRadius / Math.cos( -fragAngle / 2);
 
			// start drawings
			var startX:Number = _center + _outerRadius * Math.cos(rotation);
			var startY:Number = _center + _outerRadius * Math.sin(rotation);
			_g.beginFill(_color, 0.6);
			_g.moveTo(startX, startY);
 
			// outer outline
			for (var i:uint = 1; i < frags + 1; i++) 
			{
				var aA:Number = rotation + fragAngle * i;
				var aX:Number = _center + _outerRadius * Math.cos(aA);
				var aY:Number = _center + _outerRadius * Math.sin(aA);
				var cA:Number = aA - fragAngle / 2;
				var cX:Number = _center + _controlOutRadius * Math.cos(cA);
				var cY:Number = _center + _controlOutRadius * Math.sin(cA);
				_g.curveTo(cX, cY, aX, aY);
			}
 
			var endX:Number = _center + _innerRadius * Math.cos(rotation + arc);
			var endY:Number = _center + _innerRadius * Math.sin(rotation + arc);
			_g.lineTo(endX, endY);
 
			// inner outline
			for (var j:uint = 1; j < frags + 1; j++) 
			{
				var jA:Number = aA - fragAngle * j;
				var jX:Number = _center + _innerRadius * Math.cos(jA);
				var jY:Number = _center + _innerRadius * Math.sin(jA);
				var cjA:Number = jA + fragAngle / 2;
				var cjX:Number = _center + _controlInnRadius * Math.cos(cjA);
				var cjY:Number = _center + _controlInnRadius * Math.sin(cjA);
				_g.curveTo(cjX, cjY, jX, jY);
			}
 
			_g.lineTo(startX, startY);
			_g.endFill();
 
            this.mask = square;
		}
	}

Старый 27.08.2013, 21:33
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 9  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Маску зачем маскировать? О__о Её ж не будет видно все-равно))
А, ну да, запутался я, вы правы)

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

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

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


 


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


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