ActionScript Drawing API HELP

eralha

Power Member
Boas pessoal tenho um script que me vai colocando pontos na stage e desenha uma linha entre cada ponto, estilo a pen tool do photoshop, o que nao estou a ver como se faz é quando clico no primeiro ponto, nao consigo preencher com uma cor a shape que desenhei com os pontos.

Código:
package
{
    import flash.display.*;
    import flash.events.*;
    public class maskTeste extends Sprite
    {
        private var numPoints:uint = 3;
        private var points:Array = new Array();
        public function maskTeste()
        {
            stage.addEventListener(MouseEvent.MOUSE_DOWN, init);
            graphics.lineStyle(1, 0x000000, 100);
            graphics.beginFill(0xFF0000);
        }
        
        private function init(e:Event):void
        {
            var point:bezier = new bezier();
            point.x = this.mouseX;
            point.y = this.mouseY;
            addChild(point);
            graphics.lineStyle(1);
            if(points.length > 0)
            {
                graphics.moveTo(points[points.length-1].x, points[points.length-1].y);
                graphics.lineTo(point.x, point.y);
            }
            else
            {
                point.buttonMode = true;
                point.addEventListener(MouseEvent.MOUSE_DOWN, closeBezier);
                graphics.moveTo(point.x, point.y);
            }
            points.push(point);
        }
        
        private function closeBezier(e:Event):void{
            stage.removeEventListener(MouseEvent.MOUSE_DOWN, init);
            graphics.moveTo(points[points.length-1].x, points[points.length-1].y);
            graphics.lineTo(e.target.x, e.target.y);
            for(var i:Number=0; i < points.length; i++){
                removeChild(points[i]);
            }
            graphics.endFill();
        }
    }
}

na função closeBezier, coloco a ultima linha e removo os quadrados que estavam a orientar as linhas.

se alguem me conseguir dar uma ajuda agradecia.
 
solução:


Código:
package
{
    import flash.display.*;
    import flash.events.*;
    public class maskTeste extends Sprite
    {
        private var numPoints:uint = 3;
        private var points:Array = new Array();
        public function maskTeste()
        {
            stage.addEventListener(MouseEvent.MOUSE_DOWN, init);
            graphics.lineStyle(1, 0x000000, 100);
        }
        
        private function init(e:Event):void
        {
            var point:bezier = new bezier();
            point.x = this.mouseX;
            point.y = this.mouseY;
            addChild(point);
            graphics.lineStyle(1);
            if(points.length > 0)
            {
                graphics.moveTo(points[points.length-1].x, points[points.length-1].y);
                graphics.lineTo(point.x, point.y);
                
            }
            else
            {
                point.buttonMode = true;
                point.addEventListener(MouseEvent.MOUSE_DOWN, closeBezier);
                graphics.moveTo(point.x, point.y);
            }
            points.push(point);
            graphics.beginFill(0xFF0000,1);
            graphics.endFill();
        }
        
        private function closeBezier(e:Event):void{
            stage.removeEventListener(MouseEvent.MOUSE_DOWN, init);
            graphics.moveTo(points[points.length-1].x, points[points.length-1].y);
            graphics.lineTo(e.target.x, e.target.y);
            for(var i:Number=0; i < points.length; i++){
                removeChild(points[i]);
            }
            graphics.endFill();
        }
    }
}
 
Última edição:
Back
Topo