2012-02-12 17 views
8

im cố gắng để làm chớp sprite của tôi, nhưng nó chỉ biến mất, tôi đã tìm kiếm google, nhưng tôi không thể tìm ra giải pháp, heres những gì im làm:cocos2d nhận được một sprite chớp mắt, nó trở nên vô hình

CCBlink * blinker = [CCBlink actionWithDuration: 0.5 blinks: 1]; 
[player runAction: blinker]; 

phương pháp này được gọi khi hai sprites của tôi va chạm, khi va chạm xảy ra, tôi muốn sprite 'player' nhấp nháy trong vài giây. tại thời điểm này, khi các sprites va chạm, sprite 'player' trở nên vô hình .... cảm ơn

+0

Bạn nên chấp nhận câu trả lời hoặc nhận xét. – phlebotinum

Trả lời

0

Xác minh rằng khi (và ở đâu) bạn xử lý các loại sự kiện 'onCollision' bạn không loại bỏ sprite khỏi cha mẹ của nó.

+0

yep, khi các sprites va chạm, không có gì xảy ra, tôi chỉ muốn người chơi sprite nhấp nháy, vì vậy tôi đã đặt đoạn mã trên vào 'if (if (CGRectIntersectsRect (playerRect, rockRect) 0' – sahil

3

CCBlink dường như hoạt động bằng cách chuyển đổi chế độ hiển thị của sprite của bạn và tắt một số lần nhất định trong khoảng thời gian đã nêu mà bạn đã cung cấp. Tùy thuộc vào thời lượng bạn đặt, bạn có thể đôi khi kết thúc với trạng thái hiển thị "tắt" ở cuối hành động (rất lỗi, tôi cũng đã làm như vậy trước đây), điều này không hoàn toàn mong muốn.

Hai đề xuất: (1) Chơi xung quanh với số lần nhấp nháy. (2) Luôn bắt buộc hiển thị sprite ở cuối chớp:

Thêm: [CCShow action] vào cuối hành động chớp mắt của bạn. Bạn có thể chuỗi cả hai hành động vào một CCSequence.

+0

+1 công trình này. (cười rằng tôi đã đi qua hai tuần trước đây khi tôi đề nghị OP chấp nhận một câu trả lời, và bây giờ tôi sử dụng nó) – phlebotinum

0

Hành động nhấp nháy là lỗi. Tôi luôn sử dụng những điều sau để đảm bảo rằng đối tượng vẫn hiển thị ở cuối hoạt ảnh:

Sequence* action = Sequence::create(Blink::create(BLINK_DURATION, BLINK_TIMES), Show::create(), NULL); 
Các vấn đề liên quan