PDA

Просмотр полной версии : Эффект стирательной резинки


Mattie
12.06.2006, 16:09
не получается реализовать этот эффект:

1)

есть слой с текстом
выше слой с серым квадратиком, который закрывает собой этот текст - это кнопка, к которой вот такой скрипт привязан:

on (press)
{

lineStyle(17, 0xFF0000, 69);
moveTo(_xmouse, _ymouse);
onMouseMove = function() {
lineTo(_xmouse, _ymouse);
updateAfterEvent();
}
}

как сделать так, чтобы эта линия не рисовалась, а убирала с движением мышки серый квадратик (эффект стирательной резинки), и становился виден текст?

2)

другой вариант:

есть слой с текстом, его прикрывают куча квадратиков - это муви_клипы, сгенерированные с помощью duplicateMovieClip

- они внутри себя содержат кнопку с таким action:

on (rollOver) {

if (_root.flag_pressed == true) {
_visible = false;
}
}
on (press) {
_visible = false;
_root.flag_pressed = true;
}

on (release) {
_root.flag_pressed = false;
}

а в корне, в первом кадре, соответственно:

_root.flag_pressed = false;
onMouseUp = function()
{
flag_pressed = false;
}
onMouseDown = function()
{
flag_pressed = true;
}

amount = 20;

for( i=0; i<10;i++ )
{
j=1;

while (amount>0) {
duplicateMovieClip (_root.pix, "pix"+j, j);
setProperty ("pix"+j, _x, (_root.pix._x+j*10));
setProperty ("pix"+j, _y, (_root.pix._y));


amount--;
j++;
}
}

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

попытки приаттачены в виде .fla файла.

...может класс описать надо?

спасибо

iNils
12.06.2006, 16:16
1. Раздел AS3 не для вас. Перенес.
2. Оформите ваш код в теги [ code] [/code] самостоятельно, иначе ваша тема будет закрыта.

Господа отвечающие, дождитесь пожалуйста перед вашим ответом, пока товарищ начнет уважать нас и выполнит мое пожелание в пункте 2.

Mattie
12.06.2006, 16:36
нет вопросов, извиняйте... :)

VIO
12.06.2006, 17:34
так.... несколько вопросов....
1. напиг запускаешь рисование при нажатии на квадратик? так задумано разве?
2. как именно тебе надо что б убирались дублированные квадраты твои - при наведении на них курсора или при наведении+клике?

а пока жду ответа - сделаю так - рисование уберу.... и сделаю что б при нажатой левой кнопке убирались они......

Mattie
12.06.2006, 17:49
1. была мысль, что можно сделать эту линию с прозрачностью 100% и тогда она бы "стирала" с движением мышки при зажатой левой кнопке.

2. при наведении на них курсора мыши, при зажатой кнопке мышки. точно так, как ты делаешь... ну как работает "стирательная резинка"

Homo Sapiens
12.06.2006, 18:17
Я такое делал. С помощью масок, разумеется

Mattie
12.06.2006, 18:25
ну разумеется... :)

а можно, так сказать в общих чертах, понять КАК?

а то я совсем замучился с этой траблой.

непонятно как с помощью масок можно "стереть" серый слой над картинкой или текстом...

Homo Sapiens
12.06.2006, 18:40
Как вариант
var mask:MovieClip = this.createEmptyMovieClip("mask", 1);
data.setMask(mask);

this.count = 0;
this.onMouseMove = function()
{
if(ASnative(800, 2)(1))
{
mask.attachMovie("window", "window" + (this.count++), count + 1, {_x:_xmouse, _y:_ymouse});
}
}
data - скрытое содержание
window - кружочек, который будет приоткрывать содержание

iNils
12.06.2006, 19:37
Я бы примерно так сделал

Mattie
12.06.2006, 20:09
Люди! я очень благодарен! Большое списибо, проблема решена.

Mattie
13.06.2006, 01:30
Рано радовался я...

1) решение iNils: не получается сделать скрытый текст динамическим, чтобы из HTML сразу во флеш. я создал мувиклип, в него вложил этот текст, сделал его динамическим и в корне написал: _root.clip.myparam = 'Hello world';

ну и конечно созданный мувик = instance name = clip, var и instance name для динамич. текста = myparam

не получается, динамического текста не видать

2) решение Homo Sapiens

не получилось приаттачить мувиклип к маске. ни какой муви клип не аттачится, может что-то не так делаю (я приаттачил все, что делал :D )

iNils
13.06.2006, 01:44
А ты шрифт внедрил?

Mattie
13.06.2006, 14:37
Нет, а как? я вот нашел

http://www.kuzen.ru/forum/viewtopic.php?t=93

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

в твоем примере, маска ведь создана не программно, может поэтому у меня не получается увидеть "динамический текст". Сижу, пытаюсь разобраться :umnik2:

Mattie
13.06.2006, 20:08
iNils, насколько я понимаю ты "рисуешь" прямо на маске, поэтому и становится видно текст под ней. правильно я понимаю?

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

у меня всего 2 слоя: слой с динамич. текстом, instance name у которого text

и слой с AS:

_root.text = "Hello world";
_root.attachMovie("mask", "mask", 1);

with (text) {
setMask(mask);
}
with (mask){
lineStyle(17, 0xFF0000, 69);
moveTo(_xmouse, _ymouse);
onMouseMove = function() {
lineTo(_xmouse, _ymouse);
updateAfterEvent();
}
}

еще в библиотеке есть мувик mask, у которого linkage... >> mask

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

Mattie
14.06.2006, 18:21
ФСЕ!!! заработало, дело было в фонтах
Спасибо KUZEN за референс.

limpa luoma
27.11.2006, 15:28
а мне нужен тоже такой еффект только без интерактивности.. я в кодах пока что непонимаю, нужно сделать ролик где будет стиратся покрытие.. и появляется номер, подскажиет как можно этот эффект стирательный применить в моём случае?...

Mattie
27.11.2006, 15:54
Вам просто можно нарисовать покадровую анимацию, попробовать поиграть с motion tween или использовать маски.

limpa luoma
27.11.2006, 17:54
Спасибо.
я както так и поделала))

PhotoCore
14.01.2009, 18:59
Странно, у меня не получается скачать аттач erasure.zip :(

а все скачалось :)

djyamato
28.06.2009, 12:45
я перегонял то что нужно стереть в BitmapData а затем стирал