我目前正在制作游戏,但在创建 D-Pad 时遇到了麻烦。当我点击一个按钮时,它只会运行一次,我不知道我可以调用哪个事件来让它不断运行代码,直到玩家停止触摸按钮。当我尝试使用 while 循环时,它只会使自身超载并阻止您触摸其他按钮。这是我通常用来移动播放器和实际加载按钮等的代码:
- (void) playerMoveLeft
{
NSArray *images = [NSArray arrayWithObjects:img9,img10,img11,img12,img13,img14,img15,img16, nil];
[imageView setAnimationImages:images];
NSLog(@"Called left");
CGRect myFrame = imageView.frame;
myFrame.origin.x = imageView.frame.origin.x - 5;
imageView.frame = myFrame;
[imageView startAnimating];
[NSTimer scheduledTimerWithTimeInterval:0.6
target:self
selector:@selector(nothingMovingLeft)
userInfo:nil
repeats:NO];
[myTimer invalidate];
myTimer = nil;
}
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
img1 = [UIImage imageNamed:@"walking-e0000.png"];
img2 = [UIImage imageNamed:@"walking-e0001.png"];
img3 = [UIImage imageNamed:@"walking-e0002.png"];
img4 = [UIImage imageNamed:@"walking-e0003.png"];
img5 = [UIImage imageNamed:@"walking-e0004.png"];
img6 = [UIImage imageNamed:@"walking-e0005.png"];
img7 = [UIImage imageNamed:@"walking-e0006.png"];
img8 = [UIImage imageNamed:@"walking-e0007.png"];
img9 = [UIImage imageNamed:@"walking-w0000.png"];
img10 = [UIImage imageNamed:@"walking-w0001.png"];
img11 = [UIImage imageNamed:@"walking-w0002.png"];
img12 = [UIImage imageNamed:@"walking-w0003.png"];
img13 = [UIImage imageNamed:@"walking-w0004.png"];
img14 = [UIImage imageNamed:@"walking-w0005.png"];
img15 = [UIImage imageNamed:@"walking-w0006.png"];
img16 = [UIImage imageNamed:@"walking-w0007.png"];
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0,180.0,80.0,80.0)];
NSArray *images = [NSArray arrayWithObjects:img7, nil];
[imageView setAnimationImages:images];
[imageView setAnimationRepeatCount:100];
[imageView setAnimationDuration:0.5];
[imageView startAnimating];
[myView addSubview:imageView];
moveRight = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[moveRight addTarget:self action:@selector(playerMoveRight) forControlEvents:UIControlEventTouchUpInside];
[moveRight setTitle:@"->" forState:UIControlStateNormal];
moveRight.frame = CGRectMake(200, 280, 60, 60);
[myView addSubview:moveRight];
//longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(whichWayToMove:)];
//longPress.minimumPressDuration = 0.0;
//[myView addGestureRecognizer:longPress];
moveLeft = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[moveLeft addTarget:self action:@selector(playerMoveLeft) forControlEvents:UIControlEventTouchUpInside];
[moveLeft setTitle:@"<-" forState:UIControlStateNormal];
moveLeft.frame = CGRectMake(30, 280, 60, 60);
[myView addSubview:moveLeft];
NSLog(@"Finished setup");
}