【问题标题】:kineticJs shape with hammerjs multitouch rotation带有hammerjs多点触控旋转的kineticJs形状
【发布时间】:2014-09-01 03:11:19
【问题描述】:

尝试将hammerJs 多点触控合并到我当前的kineticJs 5.1 代码中,找到了提示,但我的拼图块根本不旋转,而且我的拼图是动态形状的,为什么?

            var startRotate = 0;
            var hammertime = Hammer(piecesArray[i][j].shape);
            hammertime.on("transformstart", function(e) {
            startRotate = piecesArray[i][j].shape.rotation();
            }).on("transformstart", function(e) {
               piecesArray[i][j].shape.rotation(startRotate + e.gesture.rotation);
               layer.draw();
            }); 

我的小提琴:http://jsfiddle.net/e70n2693/20/

【问题讨论】:

    标签: javascript html rotation kineticjs hammer.js


    【解决方案1】:

    此示例适用于 KineticJS v5.1.0 和 HammerJS v1.0.7

    您必须将Hammer 实例应用于Kinetic.Node 实例,而不是Image 对象。

    var hammertime = Hammer(piecesArray[i][j].shape);
    hammertime.on("transformstart", function(e) {
        this.startRatation = this.rotation();
    }).on("transform", function(e) {
        this.rotation((this.startRatation || 0) + e.gesture.rotation);
        this.getLayer().draw();
    });
    

    http://jsfiddle.net/e70n2693/30/

    注意:我认为最好通过offset为形状设置另一个center

    【讨论】:

    • 谢谢谢谢 :) 另一个偏移中心是什么意思?我可以设置2倍的偏移量吗?
    • 在我的示例中,jsfiddle.net/e70n2693/30 形状相对于边缘之一旋转,我认为最好围绕中心旋转。最简单的方法——配置offset属性。
    • 目前,我在我的代码中添加了一张预览图片,我现在可以旋转我的拼图,但问题是预览图片的灵敏度太敏感了,有什么办法解决这个问题吗?这里是 jsfiddle:jsfiddle.net/e70n2693/34
    【解决方案2】:

    使用最新版本的hammer.js v2.0。

    查看getting started guide。 "捏合和旋转手势默认禁用,通过"启用它

    hammertime.get('pinch').set({ enable: true });
    hammertime.get('rotate').set({ enable: true });
    

    这是一个更新的 jsfiddle。不过我无法测试它,我无法做出旋转手势,希望它可以工作。

    编辑

    问题是,Hammer(imageObj, options); api 期望 imageObj 是一个 html 元素,在你的情况下它是一个动态形状。我不知道您是否可以获得每个动力学形状的 html 元素。如果没有,您可以在 .kinetic-container canvas 元素上收听旋转。所以旋转手势是在整个画布上执行的,你必须跟踪最后一次触摸的动力学形状,这样你才能旋转它。

    我已经设置了一个重构的jsfiddle,显示了我提到的想法,但是我无法使用动力学来旋转形状,我希望这能解决你的问题,我再次无法为@987654327 测试它@ 但它适用于 tap

    【讨论】:

    • 不,它不起作用,还有其他想法吗?我实际上不需要捏。谢谢:)
    • 抱歉,我试过了,但它在旋转时也不起作用,我不知道我还能做什么,你说它适用于水龙头是什么意思?谢谢:)
    • @user3709279 我的意思是如果我监听点击事件,回调就会触发。你同意我的上述论点吗,因为你的代码甚至不能用于点击或任何手势,而不仅仅是旋转。
    • ohya,它不听任何hammerjs功能,但我适用于kineticJs单点触控功能,但我需要用2根手指旋转我的每个拼图,试过你的方法它不会改变任何东西,所以还有什么我可以做的吗?
    • 不要指望我的例子会旋转你的作品,测试它是否真的调用了旋转回调,我无法测试它,因为我没有触摸屏。如果它确实调用了回调,那么问题不在于hammerjs,而在于使用动力学旋转部件。
    猜你喜欢
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多