gpt4 book ai didi

ios - 触摸移动有问题

转载 作者:行者123 更新时间:2023-11-29 03:09:01 26 4
gpt4 key购买 nike

我想确保 Action 随着按钮按下图片而移动(就像在某些 trategiyah 中一样)。但是当我移动它时图像会抖动。这是代码:

// PROPERTY
@property (nonatomic, retain) UIView *gameView;

@property GameState gameState; // for current state == Game
@property CGPoint touchPoint;
@property CGPoint screenOffset;

// INICIALIZE
_gameView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

UIGraphicsBeginImageContext(_gameView.frame.size);
[[UIImage imageNamed:iname] drawInRect:_gameView.bounds];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

_gameView.backgroundColor = [UIColor colorWithPatternImage:image];
_gameView.userInteractionEnabled = YES;

[self.view addSubview:_gameView];

// METHODS
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
switch (_gameState) {
case Start:
break;

case Game:
if ([touch view] == _gameView) {
_touchPoint = [touch locationInView:touch.view];
NSLog(@"startTouch");
}
break;

default:
break;
}
}

- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
CGPoint currentTouchPoint = [touch locationInView:touch.view];
switch (_gameState) {
case Start:
break;

case Game:
if ([touch view] == _gameView) {
NSLog(@"%f%f", [touch locationInView:touch.view].x, [touch locationInView:touch.view].y);

currentTouchPoint.x += _screenOffset.x - _touchPoint.x;
currentTouchPoint.y += _screenOffset.y - _touchPoint.y;

_gameView.center = currentTouchPoint;
}
break;

default:
break;
}
}

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
CGPoint endedTouchPoint = [touch locationInView:touch.view];
switch (_gameState) {
case Start:
break;

case Game:
if ([touch view] == _gameView) {
_screenOffset.x += endedTouchPoint.x - _touchPoint.x;
_screenOffset.y += endedTouchPoint.y - _touchPoint.y;

_gameView.center = _screenOffset;
NSLog(@"endTouch");
}
break;

default:
break;
}
}

即使稍微移动鼠标,图像也会跳动。以下是日志中显示的内容:

startTouch
206.000000 319.000000
206.000000 338.000000
209.000000 342.000000
211.000000 367.000000
217.000000 393.000000
228.000000 435.000000
291.000000 580.000000
244.000000 470.000000
316.000000 620.000000
250.000000 470.000000
330.000000 620.000000
263.000000 468.000000
...
endTouch

与此同时,我将指针向一个方向移动。哪里错了?

我不想移动所有对象。我找理由。如果写:

_gameView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"field1.png"]];
_gameView.frame = [[UIScreen mainScreen] bounds];
//_gameView.userInteractionEnabled = YES;

行得通,但如果取消注释最后一个字符串问题返回。但它需要我的程序 =(

最佳答案

您可以通过以下行确保触摸位置在 AddView 父 View 的坐标中给出:

CGPoint location = [touch locationInView:AddView.superview];

关于ios - 触摸移动有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22432195/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com