![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2007
Сообщений: 9
|
У меня задача сделать нечто типа карты покрытия путем затемнения (или наложения цвета) участков карты. На входе я имею координаты опорных точек и рисую круги определенного радиуса с центром в этих точках. Далее я хочу получившееся покрытие с _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 и закрывает собой куски карты без прозрачности. |
|
|||||
|
Регистрация: Mar 2007
Сообщений: 9
|
Цитата:
|
|
|||||
|
Регистрация: 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;
|
|
|||||
|
Негуру
администратор
Регистрация: 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;
|
|
|||||
|
Регистрация: Mar 2007
Сообщений: 9
|
получается, что каждый круг надо в отдельный мувик впихивать? хм...
спасибо, если в отдельных мувиках, то действительно работает... Последний раз редактировалось iNils; 23.04.2007 в 18:26. |
|
|||||
|
Негуру
администратор
Регистрация: 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;
|
![]() |
![]() |
Часовой пояс GMT +4, время: 23:18. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|