2012-08-11 33 views
6

Tôi có một trò chơi sử dụng thanh tiến trình để thông báo cho người chơi về mức độ thống kê nhất định của người chơi. Ví dụ như đói, khi nó bắt đầu từ số không và từ từ thêm lên đến thanh tối đa. Khi ăn đói thì giảm.Làm thế nào để thực hiện và cập nhật chính xác thanh tiến trình trong cocos2d?

Tôi đã thử triển khai dưới dạng progressBar, nhưng nó hoạt động sai, khi thanh mở rộng cả hai cách và tôi cần nó để chỉ phát triển một bên. Ngoài ra tôi đã có thời gian khó khăn thiết lập thanh, vì nó sử dụng hành động.

Có cách nào dễ dàng để làm điều đó không?

Tôi có lớp Pet và nó có nạn đói (0-100). Tôi muốn quán bar thể hiện cơn đói.

hungerBar = [CCSprite spriteWithFile:@"redbar.png"]; 
    CCLabelTTF *hungerLabel = [CCLabelTTF labelWithString:@"Hunger:" fontName:@"Helvetica" fontSize:25]; 
    [hungerLabel setColor:ccc3(255, 255, 255)]; 

// CGPoint temp = ccp(250, 300); 
// hungerBar.position = temp; 
// [self addChild:hungerBar]; 
    CGPoint temp2 = ccp(250, 320); 
    [hungerLabel setPosition:temp2]; 
    [self addChild:hungerLabel]; 

    CCSprite *bar = [CCSprite spriteWithFile:@"redbar.png"]; 
    powerBar= [CCProgressTimer progressWithSprite:bar]; 
    powerBar.type = kCCProgressTimerTypeBar; 
    powerBar.position = ccp(-30, -10); 
    powerBar.anchorPoint = ccp(0, 0); 
    powerBar.percentage = 20; // (0 - 100) 
    [hungerLabel addChild:powerBar]; 

Đã thêm nguồn.

+0

bạn có thể hiển thị mã tiến trình của mình không? –

Trả lời

15

Trước cocos2d 2.0, bạn sẽ chỉ có thể sử dụng CCProgressTimer loại: kCCProgressTimerTypeHorizontalBarLR.

CCProgressTimer* powerBar= [CCProgressTimer progressWithFile:@"fullbar.png"]; 
powerBar.type = kCCProgressTimerTypeHorizontalBarLR; 
powerBar.percentage = 0; // (0 - 100) 

Để khác nhau mức độ đói của bạn, bạn chỉ cần thiết lập các tỷ lệ tài sản của thanh của bạn.

EDITED:

Ok, với cocos2d 2.0, có vẻ như một loại như thế là không còn nữa. Để có được một trái sang phải-bar, bạn sẽ cần phải thiết lập các trung điểmbarChangeRate tính mới nhưng hơi khó hiểu (cocos2D 2.0 documentation link):

CCProgressTimer* powerBar= [CCProgressTimer progressWithSprite:[CCSprite spriteWithFile:@"fullbar.png"]]; 
powerBar.type = kCCProgressTimerTypeBar; 
powerBar.midpoint = ccp(0,0); // starts from left 
powerBar.barChangeRate = ccp(1,0); // grow only in the "x"-horizontal direction 
powerBar.percentage = 0; // (0 - 100) 

Xem nếu những giúp!

+0

Điều này không làm việc trong Cocos2d 2. Không có phương pháp như thế này, chỉ có phương pháp với sprite, tôi đã làm cho nó, ok của nó, nhưng thanh tăng trưởng cả hai cách và tôi chỉ cần một cách. Ngoài ra không có loại như vậy trong cocos2d 2, Chỉ có loại sau đây - CCSprite * bar = [CCSprite spriteWithFile: @ "redbar.png"]; powerBar = [CCProgressTimer progressWithSprite: bar]; powerBar.type = kCCProgressTimerTypeBar; – Dvole

+0

Yea, rõ ràng là họ đã xóa loại trong phiên bản 2.0. Xem câu trả lời đã chỉnh sửa của tôi :) –

+0

"Mã đã chỉnh sửa" hoạt động, cảm ơn – kamankily

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