2014-06-23 16 views
5

Trong trò chơi của mình, tôi đang sử dụng phương thức SKAction repeatActionForever: để định kỳ gọi một số phương thức với performSelector:. Như tôi đã thấy, không có cách nào để ngăn chặn điều này. Tôi đã cố dừng qua removeActionForKey: hoặc removeAllActions - không có kết quả nào. Tôi không muốn gọi hành động này một cách đệ quy, vì vậy tôi cần giúp đỡ.Stop repeatActionForever in Sprite Kit

UPDATE: Mã của tôi SKAction

levelTimer=[SKAction repeatActionForever:[SKAction sequence:@[[SKAction waitForDuration:30.0],[SKAction performSelector:@selector(moveToNextLevel) onTarget:self]]]]; 
[self runAction:levelTimer withKey:@"levelTimerAction"]; 
+0

Phương pháp này dường như mong đợi các hành động được khóa. – uchuugaka

Trả lời

4

Phương pháp repeatActionForever nên được gọi vào nút đó SKAction đang chạy trên, vì vậy:

[sprite removeActionForKey:@"forevercalleraction"]; 

Giả sử bạn thêm các hành động như điều này và biến số sprite không được thêm cục bộ (được khai báo trong .h):

[sprite runAction:repeatPerformSelectorAction withKey:@"forevercalleraction"]; 

Tổng hợp trên, kiểm tra sau đây:

  1. nút chạy các hành động được khai báo trong .h
  2. bạn sử dụng chuỗi khóa tương tự để thêm và loại bỏ các hành động
  3. bạn cố gắng để gọi removeActionForKey trên cùng một nút được khai báo trong 1.

Hy vọng điều đó sẽ hữu ích!

+0

Xem câu hỏi được cập nhật của tôi. Tôi thêm hành động không vào một sprite. Tôi thêm cái này vào SKScene của tôi. Và tôi đã cố gắng xóa nó qua [self removeActionForKey: @ "levelTimerAction"]; –

+1

Có cần bổ sung SKScene không, vì bạn có thể tạo một nút đơn giản và thêm hành động này vào nút vô hình đó ..? – nzs

+0

Cảm ơn, bây giờ nó hoạt động :) Nút vô hình chạy hành động của tôi. Hm, điều vô lý này có ý nghĩa –

Các vấn đề liên quan