Evi*_*gis 11 objective-c uigesturerecognizer ios sprite-kit
我一直在尝试UIGestureRecognizers 和新SKScene/SKNode's的SpriteKit.我有一个问题,我接近修复它但我对一件事感到困惑.基本上,我有一个平移手势识别器,允许用户在屏幕上拖动精灵.
我遇到的唯一问题是,实际初始化平移手势需要一次点击,然后只有在SECOND上点击它才能正常工作.我想这是因为我的平移手势已经初始化了touchesBegan.但是,我不知道在哪里放置它,因为在SKScene的initWithSize方法中初始化它会使手势识别器停止实际工作.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
if (!self.pan) {
self.pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(dragPlayer:)];
self.pan.minimumNumberOfTouches = 1;
self.pan.delegate = self;
[self.view addGestureRecognizer:self.pan];
}
}
-(void)dragPlayer: (UIPanGestureRecognizer *)gesture {
CGPoint trans = [gesture translationInView:self.view];
SKAction *moveAction = [SKAction moveByX:trans.x y:-trans.y duration:0];
[self.player runAction:move];
[gesture setTranslation:CGPointMake(0, 0) inView:self.view];
}
Run Code Online (Sandbox Code Playgroud)
Mic*_*lum 11
那是因为你在触摸开始时添加了手势,所以在屏幕被点击至少一次之前手势就不存在了.另外,我会验证您实际上是在使用initWithSize:作为初始化程序,因为在那里添加手势应该没有任何问题.
另一种选择是移动代码以添加-[SKScene didMovetoView:]在场景出现后立即调用的手势.更多信息在文档中.
- (void)didMoveToView:(SKView *)view
{
[super didMoveToView:view];
// add gesture here!
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4315 次 |
| 最近记录: |