PDA

Volledige versie bekijken : mask lineStyle


scooba
%Europe/Berlin %526 %2007, 13:37
Hallo allemaal, ik wil de illusie wekken dat iemand kan 'gummen' op een site door de bezoeker met de muis te laten tekenen en deze tekening de onderliggende movieclip te laten masken.

Dit is mijn code tot nu toe:


Erasing = createEmptyMovieClip('Erasing', 1);

theGum = new Object();
theGum.onMouseDown = function() {
isErasing = true;
Erasing.moveTo(_xmouse,_ymouse);
Erasing.lineTo(_xmouse,_ymouse);
};

theGum.onMouseMove = function() {
if (isErasing) {
Erasing.lineTo(_xmouse,_ymouse);
}
};

theGum.onMouseUp = function() {
isErasing = false;
};

Mouse.addListener(theGum);

Erasing.onEnterFrame = function() {
Width = 10;
Erasing.lineStyle(Width,0xFF0000,100);
};

mcSquare.setMask(Erasing);


Je zou denken dat de setMask(Erasing) de truc zou doen, maar dit werkt dus niet.
Iemand een oplossing?

Dauntless
%Europe/Berlin %527 %2007, 13:39
Maak een rondje met de brush tool, maak er een movieclip van, geef hem een linkage en gebruik attachMovie op (_xmouse, _ymouse) om hem op de stage te zetten. Gebruik deze techniek ipv lineStyle.

scooba
%Europe/Berlin %871 %2007, 21:55
Ik kom er toch niet helemaal uit. Probeer met attachMovie te werken, en krijg de movieclip ook wel op de _xmouse en _ymouse position, maar hij blijft niet staan.

Ik teken dus niet met movieclips, maar zet steeds 1 en dezelfde movieclip op een andere plek.

Zal iets met duplicateMovieclip zijn? Heb je misschien een voorbeeldje om me op weg te helpen?

Alvast bedankt!

Dauntless
%Europe/Berlin %955 %2007, 23:55
Hoogstwaarschijnlijk geef je de movieclip steeds dezelfde depth, waardoor hij telkens de vorige movieclip (die ook op die depth staat/stond) overschrijft. Gebruik 'target.getNextHighestDepth()'

Erwinzzz
%Europe/Berlin %374 %2007, 09:59
De mogelijkheid is er ook om in plaats van een lijn te tekenen, een rechthoek te tekenen naar de positie van de muis:

this.createEmptyMovieClip("mask",this.getNextHighestDepth());
mask.lineStyle(2,0x000000,100);
var xp:Number = new Number();
var yp:Number = new Number();
mc1.setMask("mask");
this.onMouseDown = function()
{
xp = _root._xmouse;
yp = _root._ymouse;


this.onMouseMove = function()
{
mask.beginFill(0x000000,100);
mask.moveTo(xp,yp);
mask.lineTo(xp + 5,yp+5);
mask.lineTo(_root._xmouse + 5,_root._ymouse+5);
mask.lineTo(_root._xmouse,_root._ymouse);
mask.lineTo(xp,yp);
mask.endFill();
xp = _root._xmouse;
yp = _root._ymouse;
};
};
this.onMouseUp = function(){
delete this.onMouseMove;
}