我在Visual Studio2017上测试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);我得到了在touches列表中有2个CCTouch的事件,但是层没有缩放。
我哪里错了?有没有更好的方法来缩放图层?
谢谢你的帮助。
发布于 2019-06-09 11:33:35
我刚开始写这篇文章,偶然看到你的帖子,所以我根本不是权威人士。
我采用了您的代码,并使用了OnTouchesMoved。然后我将delta除以100,因为它太大了,就像在这个代码中一样。
现在它可以放大/缩小,但以一种奇怪的“横向”方式。还有更多的工作要做,但我想我应该给出一些建议!
https://stackoverflow.com/questions/48539405
复制相似问题