比如要动态显示100条带颜色不同箭头的线:位置长度都数据已知,放一个XML内存对象里或者文件里,从其他程序生成,在服务器端,有URL。
<Line color="red" X="10" Y="20" Length="300"/>
<Line color="green" X="20" Y="45" Length="360"/>
<Line color="blue" X="15" Y="60" Length="400"/>
....

解决方案 »

  1.   

    好象发错地方了吧,不过可以提示一下去搜一下<s:Path data=""/>的用法,我也记不太清楚
    data可以指定画线类型,想要什么线基本上都可以实现
      

  2.   

    function Shape() { 
        this.points = []; 
        this.lines = false; 
        this.filled = false; 
        this.lineStyle = null; 
        this.t = eval(_target); 

    Shape.prototype.addPoint = function(x, y) { 
        this.points[this.points.length] = {x:x, y:y}; 
    }; 
    Shape.prototype.removePoint = function() { 
        this.points.pop(); 
    }; 
    Shape.prototype.draw = function(w, c, a) { 
        if (this.points.length>1) { 
            this.lineStyle = {w:w, c:c, a:a}; 
            this.t.lineStyle(w, c, a); 
            var i = 0; 
            var l = this.points.length; 
            while (i<l) { 
                this.t.lineTo(this.points[i].x, this.points[i].y); 
                ++i; 
            } 
            this.lines = true; 
        } 
    }; 
    Shape.prototype.fill = function(c, a) { 
        if (this.points.length>1) { 
            if (this.lines) { 
                this.clear(); 
                this.t.lineStyle(this.lineStyle.w, this.lineStyle.c, this.lineStyle.a); 
            } else { 
                this.t.lineStyle(0, 0xFFFFFF, 0); 
                if (this.filled) { 
                    this.clear(); 
                } 
            } 
            this.t.beginFill(c, a); 
            var i = 0; 
            var l = this.points.length; 
            while (i<l) { 
                this.t.lineTo(this.points[i].x, this.points[i].y); 
                ++i; 
            } 
            this.t.endFill(); 
            this.filled = true; 
        } 
    }; 
    Shape.prototype.getX = function() { 
        if (this.points.length) { 
            return this.points[this.points.length-1].x; 
        } 
    }; 
    Shape.prototype.getY = function() { 
        if (this.points.length) { 
            return this.points[this.points.length-1].y; 
        } 
    }; 
    g = new Shape(); 
    g.addPoint(0, 100); 
    g.addPoint(100, 100); 
    g.addPoint(100, 0); 
    g.addPoint(0, 0); 
    g.fill(0x339900, 100); 
    g.draw(5, 0x000000, 100); 
     --------------------------------------------------------------------------------一点到另一点画虚线- -
     
    function DrawDottedLine(targetMC, linewidth, fromX, fromY, toX, toY) { 
        // targetMC: 目标MovieClip德InstanceName; 
        // linewidth: 线宽; 
        // fromX, fromY: 从(fromX, fromY)处开始画; 
        // toX, toY: 画到(toX, toY)处; 
        var x, y; 
        eval(targetMC).lineStyle(lineWidth, 0x000000, 100); 
        // 线的颜色是黑色(0x000000) 
        eval(targetMC).moveTo(fromX, fromY); 
        x = fromX; 
        y = fromY; 
        while (x<toX) { 
            x = x+4/(Math.sqrt((toY-fromY)*(toY-fromY)+(toX-fromX)*(toX-fromX)))*(toX-fromX); 
            y = y+4/(Math.sqrt((toY-fromY)*(toY-fromY)+(toX-fromX)*(toX-fromX)))*(toY-fromY); 
            eval(targetMC).lineTo(x, y); 
            x = x+4/(Math.sqrt((toY-fromY)*(toY-fromY)+(toX-fromX)*(toX-fromX)))*(toX-fromX); 
            y = y+4/(Math.sqrt((toY-fromY)*(toY-fromY)+(toX-fromX)*(toX-fromX)))*(toY-fromY); 
            eval(targetMC).moveTo(x, y); 
        } 

    createEmptyMovieClip("obj",1);//建一空影片 
    DrawDottedLine("_root.obj", 1, 10, 10, 200, 300);//调用函数
     -------------------------------------------------------------------------------- 
    两点画虚线- -
     
    MovieClip.prototype.dashTo = function(startPoint, destPoint, dashLength, spaceLength) { 
        var x = destPoint.x-startPoint.x; 
        var y = destPoint.y-startPoint.y; 
        var hyp = Math.sqrt((x)*(x)+(y)*(y)); 
        var units = hyp/(dashLength+spaceLength); 
        var dashSpaceRatio = dashLength/(dashLength+spaceLength); 
        var dashX = (x/units)*dashSpaceRatio; 
        var spaceX = (x/units)-dashX; 
        var dashY = (y/units)*dashSpaceRatio; 
        var spaceY = (y/units)-dashY; 
        this.moveTo(startPoint.x, startPoint.y); 
        while (hyp>0) { 
            startPoint.x += dashX; 
            startPoint.y += dashY; 
            hyp -= dashLength; 
            if (hyp<0) { 
                startPoint.x = destPoint.x; 
                startPoint.y = destPoint.y; 
            } 
            this.lineTo(startPoint.x, startPoint.y); 
            startPoint.x += spaceX; 
            startPoint.y += spaceY; 
            this.moveTo(startPoint.x, startPoint.y); 
            hyp -= spaceLength; 
        } 
        this.moveTo(destPoint.x, destPoint.y); 
    }; 
    createEmptyMovieClip("DrawingSpace", 1); 
    with (DrawingSpace) { 
        lineStyle(0, 0x000000, 100); 
        dashTo({x:300, y:0}, {x:0, y:400}, 3, 10); 

     -------------------------------------------------------------------------------- 
    鼠标画椭圆- -
     
    createEmptyMovieClip("line", n); 
    with (line) { 
        lineStyle(0.1, 0x000000, 100); 
        moveTo(0, 0); 
        lineTo(100, 0); 
        lineTo(100, 100); 
        lineTo(0, 100); 
        lineTo(0,0); 
        line._visible = 0; 

    _root.onMouseDown = function() { 
        qidian_x = _root._xmouse; 
        qidian_y = _root._ymouse; 
        with (line) { 
            _x = qidian_x; 
            _y = qidian_y; 
            _xscale = 0; 
            _yscale = 0; 
            _visible = 1; 
        } 
    }; 
    _root.onMouseMove = function() { 
        endX = _root._xmouse; 
        endY = _root._ymouse; 
        if (_root.line != "_root.line" && key.isdown(16)) { 
            if (Math.abs(endX-qidian_x)>Math.abs(endY-qidian_y)) { 
                setProperty(_root.line, _xscale, endX-qidian_x); 
                setProperty(_root.line, _yscale, endX-qidian_x); 
            } else { 
                setProperty(_root.line, _xscale, endY-qidian_y); 
                setProperty(_root.line, _yscale, endY-qidian_y); 
            } 
        } else { 
            setProperty(_root.line, _xscale, endX-qidian_x); 
            setProperty(_root.line, _yscale, endY-qidian_y); 
        } 
    }; 
    _root.onMouseUp = function() { 
        if (_root._xmouse-qidian_x != 0) { 
            i++; 
            Objectx = "Copy" add i; 
            duplicateMovieClip(_root.line, Objectx, i); 
            setProperty(Objectx, _x, qidian_x); 
            setProperty(Objectx, _y, qidian_y); 
            _root.i = i; 
        } 
        setProperty(_root.line, _visible, 0); 
    }; 
     
     --------------------------------------------------------------------------------鼠标画矩形- -
     
    createEmptyMovieClip("line", n); 
    with (line) { 
        lineStyle(0.1, 0x000000, 100); 
        moveTo(0, 0); 
        lineTo(100, 0); 
        lineTo(100, 100); 
        lineTo(0, 100); 
        lineTo(0,0); 
        line._visible = 0; 

    _root.onMouseDown = function() { 
        qidian_x = _root._xmouse; 
        qidian_y = _root._ymouse; 
        with (line) { 
            _x = qidian_x; 
            _y = qidian_y; 
            _xscale = 0; 
            _yscale = 0; 
            _visible = 1; 
        } 
    }; 
    _root.onMouseMove = function() { 
        endX = _root._xmouse; 
        endY = _root._ymouse; 
        if (_root.line != "_root.line" && key.isdown(16)) { 
            if (Math.abs(endX-qidian_x)>Math.abs(endY-qidian_y)) { 
                setProperty(_root.line, _xscale, endX-qidian_x); 
                setProperty(_root.line, _yscale, endX-qidian_x); 
            } else { 
                setProperty(_root.line, _xscale, endY-qidian_y); 
                setProperty(_root.line, _yscale, endY-qidian_y); 
            } 
        } else { 
            setProperty(_root.line, _xscale, endX-qidian_x); 
            setProperty(_root.line, _yscale, endY-qidian_y); 
        } 
    }; 
    _root.onMouseUp = function() { 
        if (_root._xmouse-qidian_x != 0) { 
            i++; 
            Objectx = "Copy" add i; 
            duplicateMovieClip(_root.line, Objectx, i); 
            setProperty(Objectx, _x, qidian_x); 
            setProperty(Objectx, _y, qidian_y); 
            _root.i = i; 
        } 
        setProperty(_root.line, _visible, 0); 
    }; 
     -------------------------------------------------------------------------------- 
    用鼠标任意画直线- -
     
    createEmptyMovieClip("line", n); 
    with (line) { 
        lineStyle(1, 0x000000, 100); 
        moveTo(0, 0); 
        lineTo(100, 100); 
        line._visible = 0; 

    _root.onMouseDown = function() { 
        qidian_x = _root._xmouse; 
        qidian_y = _root._ymouse; 
        with (line) { 
            _x = qidian_x; 
            _y = qidian_y; 
            _xscale = 0; 
            _yscale = 0; 
            _visible = 1; 
        } 
    }; 
    _root.onMouseMove = function() { 
        endX = _root._xmouse; 
        endY = _root._ymouse; 
        if (_root.line != "_root.line" && key.isdown(16)) { 
            if (Math.abs(endX-qidian_x)>Math.abs(endY-qidian_y)) { 
                setProperty(_root.line, _xscale, endX-qidian_x); 
                setProperty(_root.line, _yscale, endX-qidian_x); 
            } else { 
                setProperty(_root.line, _xscale, endY-qidian_y); 
                setProperty(_root.line, _yscale, endY-qidian_y); 
            } 
        } else { 
            setProperty(_root.line, _xscale, endX-qidian_x); 
            setProperty(_root.line, _yscale, endY-qidian_y); 
        } 
    }; 
    _root.onMouseUp = function() { 
        if (_root._xmouse-qidian_x != 0) { 
            i++; 
            Objectx = "Copy" add i; 
            duplicateMovieClip(_root.line, Objectx, i); 
            setProperty(Objectx, _x, qidian_x); 
            setProperty(Objectx, _y, qidian_y); 
            _root.i = i; 
        } 
        setProperty(_root.line, _visible, 0); 
    }; 
     -------------------------------------------------------------------------------- 
    鼠标任意画线- -
     
    createEmptyMovieClip("xian",1); 
    with (xian) { 
        _root.onMouseMove = function() { 
            if (draw) { 
                _root.lineStyle(0, 0x000000, 100); 
                _root.lineTo(_root._xmouse, _root._ymouse); 
            } 
        }; 
        _root.onMouseDown = function() { 
            draw = true; 
            _root.moveTo(_root._xmouse, _root._ymouse); 
        }; 
        _root.onMouseUp = function() { 
            draw = false; 
        }; 

      

  3.   

    var point = new Array();
    point[0] = [100, 200];
    point[1] = [300, 300];
    point[2] = [100, 100];
    point[3] = [200, 400];
    var x = point[0][0];
    var y = point[0][1];
    var i = 1;
    createEmptyMovieClip("line", 1);
    line.lineStyle(1, 0x0000FF, 100);
    line.moveTo(point[0][0], point[0][1]);
    line.onEnterFrame = function() {
        if (x != point[0] && y != point[1]) {
        x = (x < point[0]) ? (x + 1) : (x - 1);
        y = (x-point[i-1][0])*(point[1]-point[i-1][1])/(point[0]-point[i-1][0])+point[i-1][1];
        this.lineTo(x, y);
    } else if (x != point[0]) {
        x = (x < point[0]) ? (x + 1) : (x - 1);
        this.lineTo(x, y);
    } else if (y != point[1]) {
        y = (x < point[1]) ? (y + 1) : (y - 1);
        this.lineTo(x, y);
    } else if (i < point.length - 1) {
        i++;
    } else {
        delete this.onEnterFrame;
    }
    };
      

  4.   

    1.使用 URLLoader 类,读取xml数据到数组。
    2.使用graphicso类绘图。
      myShape.graphics.lineStyle(2, 0x990000, .75);
      myShape.graphics.moveTo(100, 100);
      myShape.graphics.lineTo(200, 200);