2013-09-25 37 views
7

Làm cách nào để kiểm tra xem SKNode có đang chạy hành động trước khi chạy một hành động không? Tôi muốn để có thể làm điều gì đó giống như ...kiểm tra xem SKNode có đang chạy SKAction

if (![mySprite isRunningActions]) { 
    [mySprite runAction:action]; 
} 

Nếu không có được xây dựng theo cách tôi đang nghĩ đến việc tạo một tài sản BOOL mới để giữ trạng thái hành động.

Trả lời

11

Xem xét sử dụng các tác vụ được đặt tên bằng bất kỳ phương thức nào dựa trên khóa SKAction. Vì vậy, thay vào đó bạn sẽ chạy hành động của mình bằng cách sử dụng tên tương đương với runAction:runAction:withKey:. Nếu một hành động với cùng một khóa đang chạy, nó sẽ bị xóa trước khi một hành động mới được thêm vào. Ngoài ra, hãy sử dụng actionForKey: để xem liệu một hành động có đang chạy như bạn đang cố gắng thực hiện ngay bây giờ trong mã của bạn hay không, sau đó removeActionForKey: để xóa hoặc xử lý nếu cần.

+1

Đây là câu trả lời hay hơn, vì bạn có thể kiểm tra hành động cụ thể, thay vì kiểm tra xem sprite có đang chạy bất kỳ hành động nào không (dĩ nhiên, đó là nếu bạn biết khóa cho hành động :) – Septronic

14

Xin lỗi vì câu trả lời trễ, nhưng bạn có thể sử dụng phương thức sprite hasActions để kiểm tra xem một sprite hiện có đang chạy bất kỳ hành động nào không.

if (![mySprite hasActions]) 
{ 
    [mySprite runAction:action]; 
} 
Các vấn đề liên quan