SpriteKit 实现 COC 游戏场景的平移和缩放
来源:互联网 发布:数据的概念 编辑:程序博客网 时间:2024/06/05 03:02
继承SKSpriteNode,重写touches逻辑,可实现类似COC游戏场景的平移和缩放。
代码如下:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ if (1 == touches.count) { UITouch *touch = [touches anyObject]; CGPoint currentPoint = [touch locationInNode:self.parent]; CGPoint previousPoint = [touch previousLocationInNode:self.parent]; CGPoint translation = CGPointMake(currentPoint.x - previousPoint.x, currentPoint.y - previousPoint.y); [self handlePanTranslation:translation]; } else if (2 == touches.count) { NSArray *arr = [touches allObjects]; UITouch *touch1 = [arr objectAtIndex:0]; UITouch *touch2 = [arr objectAtIndex:1]; CGPoint position1 = [touch1 locationInNode:self]; CGPoint position2 = [touch2 locationInNode:self]; CGPoint previousPosition1 = [touch1 previousLocationInNode:self]; CGPoint previousPosition2 = [touch2 previousLocationInNode:self]; // calculate pinch rate and execute pinch CGFloat distance = WLDistanceBetweenPoints(position1, position2); CGFloat preDistance = WLDistanceBetweenPoints(previousPosition1, previousPosition2); CGFloat rate = self.currentRate + (distance - preDistance) / preDistance; CGFloat minWidth = self.scene.size.width; CGFloat minHeight = self.scene.size.height; CGFloat minWidthRate = minWidth / 1280.f; CGFloat minHeightRate = minHeight / 656.f; rate = MIN(rate, 1.5); rate = MAX(rate, minWidthRate); rate = MAX(rate, minHeightRate); CGSize beforeSize = self.size; self.xScale = rate; self.yScale = rate; CGSize afterSize = self.size; self.currentRate = rate; // garuntee edge from out of screen CGFloat xDelta = (afterSize.width - beforeSize.width) / 2; CGFloat yDelta = (afterSize.height - beforeSize.height) / 2; CGPoint currentPosition = self.position; currentPosition.x -= xDelta; currentPosition.y -= yDelta; currentPosition.x = MIN(currentPosition.x, 0); currentPosition.x = MAX(currentPosition.x, self.scene.size.width - self.size.width); currentPosition.y = MIN(currentPosition.y, 0); currentPosition.y = MAX(currentPosition.y, self.scene.size.height - self.size.height); self.position = currentPosition; }}
0 0
- SpriteKit 实现 COC 游戏场景的平移和缩放
- OpenGL绘制简单场景,实现旋转缩放平移和灯光效果
- Unity3D 场景平移、缩放
- 图像的平移和缩放
- Mapxtreme Java 地图缩放,平移操作的原理和实现
- unity3d实现相机对场景物体的旋转、缩放、平移查看功能、近似于scene下查看场景的效果
- matlab实现图像的平移、旋转、缩放
- matlab实现图像的平移、旋转、缩放
- Matlab 实现图像的平移,旋转,缩放
- coc类游戏客户端实现
- Android游戏4-27 实现图像特效-旋转 缩放 平移
- Bitmap和Canvas的平移、缩放、旋转
- 矩阵的平移,缩放和旋转
- [OpenGL] 桌子的平移、旋转和缩放
- 图像的平移,缩放..
- Unity3D 场景平移、缩放(二)
- VC++调用OpenGL实现3维图形的旋转,平移和缩放
- Android中用Matrix实现ImageView里的图片平移和缩放动画
- 使用Ajaxupload.js上传文件
- dos环境lsnrctl start 出现tns-12560和tns-00530协议适配器错误的解答
- 基于html5 WebSocket和WebRTC实现IM和视音频呼叫(二)
- Apache与JBoss AS 5 HTTP集群配置
- VC菜单分割符
- SpriteKit 实现 COC 游戏场景的平移和缩放
- RTP&RTCP
- 介绍一款使用html5画图的JS开源软件ichartjs
- 12.04 tips[网络收集,未完...]
- VMware9的虚拟机电源无法打开
- 医学影像图像处理若干关键问题的研究——开题报告v1.1
- Linux下apache(优雅)停止、重启方式
- socket编程的同步、异步与阻塞、非阻塞示例详解之一
- 自己想的积分图代码