【问题标题】:EaselJS - Rotate a shape around its centerEaselJS - 围绕其中心旋转形状
【发布时间】:2013-12-18 07:49:37
【问题描述】:

我正在用 EaselJS 制作一个旋转矩形,但它不像我想象的那样工作。

我想,如果我想制作一个正方形 (40x40),它在位置 x=100, y=100 处围绕其中心旋转,我需要将它的注册点设置为 regX=20, regY=20。

//Create a stage by getting a reference to the canvas
stage = new createjs.Stage("demoCanvas");
//Create a Shape DisplayObject.
circle = new createjs.Shape();
circle.graphics.beginFill("red").drawRect(100, 100, 40, 40);
circle.regX = circle.regY = 20;
//Add Shape instance to stage display list.
stage.addChild(circle);

createjs.Ticker.setFPS(60);
createjs.Ticker.addEventListener("tick", onTick);

function onTick() {
    circle.rotation++;
    stage.update();
}

http://jsfiddle.net/ZbZjL/14/

【问题讨论】:

    标签: rotation easeljs


    【解决方案1】:

    您在形状内的点 100、100 处绘制矩形,然后将注册点设置为 20、20,这意味着您正在旋转一个巨大的形状,其中一个角上有一个矩形(或多或少) 对角的一个点。

    下面我在新形状的原点绘制矩形,然后使用 x 和 y 属性放置形状本身:

    //Create a stage by getting a reference to the canvas
    stage = new createjs.Stage("demoCanvas");
    //Create a Shape DisplayObject.
    circle = new createjs.Shape();
    circle.graphics.beginFill("red").drawRect(0, 0, 40, 40);
    circle.regX = circle.regY = 20;
    
    circle.x = circle.y = 100;
    
    //Add Shape instance to stage display list.
    stage.addChild(circle);
    
    createjs.Ticker.setFPS(60);
    createjs.Ticker.addEventListener("tick", onTick);
    
    function onTick() {
        circle.rotation++;
        stage.update();
    }
    

    见fiddle。

    【讨论】:

    • 谢谢。我误解了drawRect(x,y,w,h)方法。 x, y 不是 circle.x 和 circle.y。
    • 感谢这个例子,我发现正确围绕中心点旋转矩形的关键在于 Shape DisplayObject 和嵌套在该形状对象中的 Rectangle 之间的区别。两者都有自己的 x、y、宽度和高度。只有 Shape DisplayObject) 具有注册点。围绕此注册点旋转 Rectangle 需要 Rectangle 中心点与 DisplayObject 注册点对齐。这是通过在 DisplayObject 中的x: 0, y: 0 点处绘制矩形来完成的。
    • 建议:标记旋转矩形circle 可能会让一些读者感到困惑。在本例中,rotating 可能是 Shape DisplayObject 的更准确的变量名称。
    猜你喜欢
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-21
    • 2019-02-23
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多