1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

ActionScript Drawing API HELP

Discussão em 'Web Development' iniciada por eralha, 2 de Abril de 2009. (Respostas: 5; Visualizações: 701)

  1. eralha

    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.
     
  2. eralha

    eralha Power Member

    o pessoal aqui não responde a perguntas dificeis pois não?
     
  3. Huckleberry

    Huckleberry Power Member

    :x2:

    Só fazes perguntas difíceis!
     
  4. eralha

    eralha Power Member

    foi mesmo um ultimato, mas ja encontrei solução.
     
  5. Huckleberry

    Huckleberry Power Member

    Bem, se não for pedir muito, partilha a solução...
     
  6. eralha

    eralha Power Member

    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: 7 de Abril de 2009

Partilhar esta Página