I’ve been having this issue for a day or two now and it’s really bothering me. Sometimes the drawing api draws to the mask perfectly fine other times it doesn’t work at all.
Here’s the code:
///_quality = "LOW";
var d:Number = 0;
var ptArr:Array = new Array();
_root.flake.setMask(_root.masky);
this.flake.temp = _root.createEmptyMovieClip("container", d);
_root.onMouseDown = function(Void):Void {
if(this.flake.hitTest( _root._xmouse, _root._ymouse, true)){
delete ptArr;
_root.ptArr = new Array();
//create temp clip to draw in
this.flake.temp._x = this.flake._x;
this.flake.temp._y = this.flake._y;
this.flake.temp.moveTo(this.flake._xmouse, this.flake._ymouse);
this.flake.temp.lineStyle( 1, 0xFFFFFF, 100);
}
if(this.flake.hitTest( _root._xmouse, _root._ymouse, true)){
_root.flake.onMouseMove = function(Void):Void {
if( this.hitTest( _root._xmouse, _root._ymouse, true) ){
ptArr.push( new Location( this._xmouse, this._ymouse) );
this.temp.lineTo( this._xmouse, this._ymouse);
}
}
}
}
_root.onMouseUp = function(Void):Void {
//kill events
delete this.flake.onMouseMove;
//close the shape
this.flake.temp.lineTo( ptArr[0].x, ptArr[0].y );
trace("Pt arr 0 x: "+ptArr[0].x);
trace("Pt arr 0 y: "+ptArr[0].y);
//redraw the shape on mask
var mask:MovieClip = _root.masky;
mask.moveTo(ptArr[0].x, ptArr[0].y);
mask.lineStyle( 1, 0xFFFFFF, 100);
mask.beginFill( 0xFFFFFF, 100)
if( ptArr[0].x > ptArr[ptArr.length-1].x ){
trace("If triggered");
for( var a:Number = 1; a <= ptArr.length-2; a < 5 || a >= ptArr.length-8 ? a++ : a+=3){
mask.lineTo( ptArr[a].x, ptArr[a].y);
}
}else{
trace("Else triggered");
for( var a:Number = ptArr.length-1; a > 0; a--){
mask.lineTo(ptArr[a].x, ptArr[a].y);
}
}
mask.lineTo( ptArr[0].x, ptArr[0].y);
mask.endFill();
_root.flake.setMask(mask);
}
You can look at it here too http://smurf2.isolated-designs.net/flake/flake.html .