【问题标题】:Drawing a Line in a html5 canvas using EaselJS使用 EaselJS 在 html5 画布中绘制一条线
【发布时间】:2013-04-06 10:31:54
【问题描述】:

我对 Easel 和 HTML5 本身非常陌生。我正在尝试使用 EaselJS 在画布上绘制一条线。 X 坐标固定为 100,Y 坐标从数组列表中获取。我编写的代码如下所示。有人可以告诉我哪里出错了吗?

function myFunction(attachPoint)
{
//Code for canvas creation is written here.[Not shown];
//created a stage.
stage = new createjs.Stage(canvas.domElement());
//3. create some shapes.MagnitudeLessThanTwo is the array where we get the YAxis Coordinates from
alert("The lenght before function is"+MagnitudeLessThanTwo.length);
myShape = new drawLineGraph(MagnitudeLessThanTwo);
//4. finally add that shape to the stage
stage.addChild(myShape);
//5. set up the ticker
if (!createjs.Ticker.hasEventListener("tick")) { 
createjs.Ticker.addEventListener("tick", ourTickFunction);
  };
};

function drawLineGraph(dataList)
{
this.index=0;//To keep the track of the index of the array from which we get the Y Axis.
var graphics = new createjs.Graphics();
graphics.setStrokeStyle(1);
graphics.beginStroke("white");
graphics.moveTo(50,(dataList[this.index].magnitude)*100); 
graphics.lineTo(50,(dataList[(this.index)++].magnitude)*100);
createjs.Shape.call(this,graphics);
this.tick = function() {
graphics.moveTo(100,(dataList[this.index].magnitude)*100); 
graphics.lineTo(100,(dataList[(this.index)++].magnitude)*100);
stage.addChild(graphics);
  };
};
drawLineGraph.prototype = new createjs.Shape(); //set prototype
drawLineGraph.prototype.constructor = drawLineGraph; //fix constructor pointer


I am getting the following Error.
"Object [object Object] has no method 'isVisible'"- This is inside the EaselJS Library.

【问题讨论】:

    标签: javascript html html5-canvas easeljs


    【解决方案1】:

    这里有几个问题。您看到的错误是因为您将图形添加到舞台,而不是形状。

    另一个问题是如何在刻度中修改图形:

    
    this.tick = function() {
        graphics.moveTo(100,(dataList[this.index].magnitude)*100); 
        graphics.lineTo(100,(dataList[(this.index)++].magnitude)*100);
        stage.addChild(graphics);
    };
    

    您只需将Shape添加到舞台上一次,每次更新舞台时它都会重新绘制您的图形。您的滴答调用正在每帧添加新的图形指令,因此它会将所有这些调用堆叠起来,最终会变得非常慢。

    确保在向其绘制新内容之前清除图形,除非您尝试创建附加效果(如果您想创建附加效果,也许可以查看缓存/updateCache 以使其具有性能)。查看 GitHub 存储库中的“curveTo”和“updateCache”示例以了解使用情况。

    将形状而不是图形添加到舞台后,请随时发布一些后续问题,我可以尝试进一步提供帮助。

    干杯:)

    【讨论】:

    • 有什么简单的方法可以得到两条线的交点?
    • @dmigo 肯定有!数学。 mathopenref.com/coordintersection.html -- EaselJS 是一个绘图库,但您可以将任何类型的数学、物理等添加到您的内容中。
    猜你喜欢
    • 2020-04-22
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多