1

我正在 Visual Studio 2017 上测试 CocosSharp,我想通过测试 CCTouch 元素列表来对 CCLayer 执行缩放。

此列表由 CCEventListenerTouchAllAtOnce.OnTouchesBegan 事件发送。

这是我的代码不起作用:

    private void HandleTouchBegan(List<CCTouch> touches, CCEvent touchEvent)
    {
        if (touches.Count == 2)
        {
            CCTouch t1 = touches[0];
            CCTouch t2 = touches[1];

            CCPoint Loc1 = t1.LocationOnScreen;
            CCPoint Loc2 = t2.LocationOnScreen;

            CCPoint PreviousLoc1 = t1.PreviousLocationOnScreen;
            CCPoint PreviousLoc2 = t2.PreviousLocationOnScreen;

            double CurrentDistance = Math.Sqrt(Math.Pow(Loc1.X - Loc2.X, 2.0f) + Math.Pow(Loc1.Y - Loc2.Y, 2.0f));
            double PreviousDistance = Math.Sqrt(Math.Pow(PreviousLoc1.X - PreviousLoc2.X, 2.0f) + Math.Pow(PreviousLoc1.Y - PreviousLoc2.Y, 2.0f));

            double Delta = CurrentDistance - PreviousDistance;

            layer.ScaleX += (float)Delta;
            layer.ScaleY += (float)Delta;
       }

我在 CCLayer 层上添加了这样的触摸监听器:

        var touchListener = new CCEventListenerTouchAllAtOnce();
        touchListener.OnTouchesBegan = HandleTouchBegan;
        layer.AddEventListener(touchListener);

我在触摸列表中获得了带有 2 CCTouch 的事件,但图层未缩放。

我哪里错了?有没有更好的方法来做这个图层缩放?

感谢您的帮助。

4

1 回答 1

0

我刚开始处理这些东西,偶然发现了你的帖子,所以我根本不是权威。

我拿走了你的代码并OnTouchesMoved改用了。然后我将它除以delta100,因为它在这段代码中太大了。

现在它放大/缩小,但以一种奇怪的“横向”方式。还有更多工作要做,但我想我会提供一些意见!

于 2019-06-09T03:33:34.910 回答