2013-08-28 18 views
0

我目前使用的是cocos2dx。我的測試設備是ipad2我希望我的精靈尺寸與紋理尺寸無關,因爲我無法提供一對一的貼圖。這裏是例子 假設我有一個紋理,其尺寸爲1024,1024 我想從0,0至300,300 我想,精靈繪製從100,100到200,200使用的僅一部分我怎樣才能達致這Cocos2dx在不使用plist文件的情況下更改sprite大小和紋理uv

我已經嘗試設置四manualy但它給人一種怪異的行爲 我四頂點

 quad.bl.vertices = 0,0 
    quad.br.vertices = 1024,0 
    quad.tr.vertices = 1024,1024 
    quad.tl.vertices = 0,1024 

沒有顯示在屏幕上

但是當我將其更改爲

 quad.bl.vertices = 0,0 
    quad.br.vertices = 2048,0 
    quad.tr.vertices = 2048,2048 
    quad.tl.vertices = 0,2048 

然後在屏幕上顯示精靈的部分。改變頂點後一點看來,如果coocs 2D是假設的iPad的左下角是在1024,1024個 問候

+0

在cocos2d-iphone中ccsprite具有紋理和紋理屬性,後者定義繪製紋理的哪個部分 – LearnCocos2D

+0

,但是如果我使用紋理,那麼精靈大小將會改變,這是不需要的 –

+0

我能夠通過應用正確的uv覆蓋CCSprite並手動調用setTextureCoords,但調整精靈的大小仍然不起作用 –

回答

1

我覺得這是你所需要的

CCRect requiredPortion = CCRectMake(0, 0, 300, 300); 
CCRect drawArea = CCRectMake(100, 100, 100, 100); 

CCImage *image = new CCImage(); 
image->initWithImageFile("texture.png"); 

//Create a full size texture for example 1024,1024 
CCTexture2D *texture = new CCTexture2D(); 
texture->initWithImage(image); 

//Create a sprite from the require portion of texture (Here size of created sprite will be 300,300); 
CCSprite *spriteNew = CCSprite::createWithTexture(texture, requiredPortion); 

//Setting anchor point to make sure we are drawing from required position on screen 
spriteNew->setAnchorPoint(ccp(0, 0)); 

//Set scale to sprite to make it fit in you required area i.e (requiredSize/currentSize) 
spriteNew->setScale(drawArea.size.width/requiredPortion.size.width); 
spriteNew->setPosition(drawArea.origin); 

someNode->addChild(spriteNew); 

確保你刪除後來,他們不是autorelease。

+0

我正在查看您的代碼並將其應用於大型精靈並縮小它們,取決於設備。然而,說我的Sprite是180 x 180,我想繪製整個東西,但它有90 x 90的不同設備。 – Jason

相關問題