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

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

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

Регистрация: Mar 2007
Сообщений: 9
По умолчанию _alpha у MovieClip с несколькими кругами.

У меня задача сделать нечто типа карты покрытия путем затемнения (или наложения цвета) участков карты. На входе я имею координаты опорных точек и рисую круги определенного радиуса с центром в этих точках. Далее я хочу получившееся покрытие с _alpha = 20 наложить на карту.
Делаю так:
Код:
this.ovl = this.map_mc.createEmptyMovieClip("ovl", this.map_mc.getNextHighestDepth());
for (var i = 0; i < cp_array.length; i++) {
	cp = cp_array[i];
	with (this.ovl) {
		beginFill(0xFF0000);
		moveTo(cp.x-r, cp.y);
		curveTo(cp.x-r,cp.y+r,cp.x,cp.y+r);
		curveTo(cp.x+r,cp.y+r,cp.x+r,cp.y);
		curveTo(cp.x+r,cp.y-r,cp.x,cp.y-r);
		curveTo(cp.x-r,cp.y-r,cp.x-r,cp.y);
		endFill(0xFF0000);
	}
}
this.ovl._alpha = 20;
В принципе получаю то, что нужно, НО! у меня внутри мувика покрытия идут затемнения на пересечении кругов. А вот это какраз мне ненужно.
Я так понимаю, что это какое-то деление на слои внутри MovieClip. Но мне оно ненужно... Как от него избавиться?
Я уже пробовал использовать setMask, но тогда мувик покрытия не хочет принимать _alpha и закрывает собой куски карты без прозрачности.

Старый 23.04.2007, 17:47
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Если я правильно вас понял, то вам нужно все мувиклипы-круги поместить в один общий мувиклип. Ему назначить прозрачность 20 (а не кругам) и blendMode = 2;
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 23.04.2007, 17:51
dmitriy_rsl вне форума Посмотреть профиль Отправить личное сообщение для dmitriy_rsl Найти все сообщения от dmitriy_rsl
  № 3  
Ответить с цитированием
dmitriy_rsl

Регистрация: Mar 2007
Сообщений: 9
Цитата:
Сообщение от iNils
Если я правильно вас понял, то вам нужно все мувиклипы-круги поместить в один общий мувиклип. Ему назначить прозрачность 20 (а не кругам) и blendMode = 2;
дык я и сделал все круги в одном мувиклипе... а выглядит так, что они в разных... и _alpha я поставил... щас вот blendMode поставил = 2, но всеравно не то...

Старый 23.04.2007, 17:54
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Давайте исходник.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 23.04.2007, 18:04
dmitriy_rsl вне форума Посмотреть профиль Отправить личное сообщение для dmitriy_rsl Найти все сообщения от dmitriy_rsl
  № 5  
Ответить с цитированием
dmitriy_rsl

Регистрация: Mar 2007
Сообщений: 9
Код:
function circle(mc:MovieClip, ax, ay, r:Number) {
	with (mc) {
		beginFill(0xFF0000);
		moveTo(ax-r, ay);
		curveTo(ax-r, ay+r, ax, ay+r);
		curveTo(ax+r, ay+r, ax+r, ay);
		curveTo(ax+r, ay-r, ax, ay-r);
		curveTo(ax-r, ay-r, ax-r, ay);
		endFill();
	}
}
var bg:MovieClip = _root.createEmptyMovieClip("bg", _root.getNextHighestDepth());
bg.beginFill(0x0000FF);
bg.moveTo(0, 0);
bg.lineTo(500, 0);
bg.lineTo(500, 200);
bg.lineTo(0, 200);
bg.lineTo(0, 0);
bg.endFill();
bg._alpha = 40;
var ovl = _root.createEmptyMovieClip("ovl", _root.getNextHighestDepth());
circle(ovl, 200, 100, 50);
circle(ovl, 250, 100, 50);
ovl._alpha = 20;

Старый 23.04.2007, 18:12
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Вот что у вас было
Код:
function circle (mc:MovieClip, ax:Number, ay:Number, r:Number) {
	with (mc) {
		beginFill (0xFF0000);
		moveTo (ax - r, ay);
		curveTo (ax - r, ay + r, ax, ay + r);
		curveTo (ax + r, ay + r, ax + r, ay);
		curveTo (ax + r, ay - r, ax, ay - r);
		curveTo (ax - r, ay - r, ax - r, ay);
		endFill ();
	}
}
var bg:MovieClip = _root.createEmptyMovieClip ("bg", _root.getNextHighestDepth ());
bg.beginFill (0x0000FF);
bg.moveTo (0, 0);
bg.lineTo (500, 0);
bg.lineTo (500, 200);
bg.lineTo (0, 200);
bg.lineTo (0, 0);
bg.endFill ();
bg._alpha = 40;
var cont:MovieClip = _root.createEmptyMovieClip ("cont", _root.getNextHighestDepth ());
for (var i:Number = 0; i < 3; i++) {
	var ovl = cont.createEmptyMovieClip ("ovl" + cont.getNextHighestDepth (), cont.getNextHighestDepth ());
	circle (ovl, 200 + i * 75, 100, 50);
}
cont._alpha = 20;
//cont.blendMode = 2;
А теперь расскомментарьте последнюю строчку.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 23.04.2007, 18:14
dmitriy_rsl вне форума Посмотреть профиль Отправить личное сообщение для dmitriy_rsl Найти все сообщения от dmitriy_rsl
  № 7  
Ответить с цитированием
dmitriy_rsl

Регистрация: Mar 2007
Сообщений: 9
получается, что каждый круг надо в отдельный мувик впихивать? хм...

спасибо, если в отдельных мувиках, то действительно работает...


Последний раз редактировалось iNils; 23.04.2007 в 18:26.
Старый 23.04.2007, 18:28
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Можно и не в отдельный. Главное, чтобы было два вложенных мувиклипа. К верхнему применяем бленд и альфу, а в нижнем рисуем.
Код:
function circle (mc:MovieClip, ax:Number, ay:Number, r:Number) {
	with (mc) {
		beginFill (0xFF0000);
		moveTo (ax - r, ay);
		curveTo (ax - r, ay + r, ax, ay + r);
		curveTo (ax + r, ay + r, ax + r, ay);
		curveTo (ax + r, ay - r, ax, ay - r);
		curveTo (ax - r, ay - r, ax - r, ay);
		endFill ();
	}
}
var bg:MovieClip = _root.createEmptyMovieClip ("bg", _root.getNextHighestDepth ());
bg.beginFill (0x0000FF);
bg.moveTo (0, 0);
bg.lineTo (500, 0);
bg.lineTo (500, 200);
bg.lineTo (0, 200);
bg.lineTo (0, 0);
bg.endFill ();
bg._alpha = 40;
var cont:MovieClip = _root.createEmptyMovieClip ("cont", _root.getNextHighestDepth ());
var ovl = cont.createEmptyMovieClip ("ovl" + cont.getNextHighestDepth (), cont.getNextHighestDepth ());
for (var i:Number = 0; i < 3; i++) {
	circle (ovl, 200 + i * 75, 100, 50);
}
cont._alpha = 20;
cont.blendMode = 2;
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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