2012-08-05 12 views
5

Tôi đã có mã lặp lại trục X và Y-đó là:Làm cách nào để lặp lại sprite theo chiều ngang?

bg = [CCSprite spriteWithFile:@"ipadbgpattern.png" rect:CGRectMake(0, 0, 3000, 3000)]; 
     bg.position = ccp(500,500); 
     ccTexParams params = {GL_LINEAR,GL_LINEAR,GL_REPEAT,GL_REPEAT}; 
     [bg.texture setTexParameters:&params]; 
     [self addChild:bg]; 

Tuy nhiên, tôi không biết làm thế nào để thay đổi params để cho nền lặp lại dọc theo trục ngang.

Trả lời

3

Không có tham số cho điều đó. Chỉ cần đảm bảo CGRect mở rộng vùng mà bạn muốn kết cấu lặp lại, và bản thân texture phải là một sức mạnh của hai (tức là 1024x1024).

Tôi đoán rằng có thể bạn đang sử dụng kết cấu 1024x768 và sau đó bạn sẽ thấy khoảng cách giữa kết cấu lặp lại.

+0

oh yeah right thanks. Tôi biết về kích thước của hình ảnh (sức mạnh của 2) nhưng rect của tôi không đúng kích cỡ. Hoàn hảo. Cảm ơn bạn. –

1

Điều này không thể đạt được ở cấp GL, vì GL_REPEAT mong đợi kết cấu có kích thước nguồn bằng hai.

Hãy nhìn vào lớp TiledSprite của tôi cho một phương tiện chứ không phải được tối ưu hóa, nhưng chức năng của tùy tiện lặp đi lặp lại một kết cấu tùy tiện có kích thước hoặc subtexture:

https://gist.github.com/Nolithius/6694990

Dưới đây là một cái nhìn thoáng qua kết quả và sử dụng của nó:

http://www.nolithius.com/game-development/cocos2d-iphone-repeating-sprite