2012-05-15 108 views
1

所以即時嘗試使用一個簡單的靜態背景來製作遊戲,但是當我將它繪製到屏幕上時(因爲圖像的分辨率與屏幕沒有縮放比例相同屏幕),它會錯誤地繪製圖像的底部,其中圖像的底部幾百個像素沿着圖像完全相同。對不起,這是很難解釋,但是在這裏,我真的不能發佈什麼是錯的圖像。Cocos2D android背景圖像被搞砸了

現在我只是使用一個簡單的精靈渲染這個背景圖像。這裏是正在使用的代碼:

// background layer: another image 
    background = CCSprite.sprite("WaterBackground.png"); 
    // change the transform anchor point (optional) 
    background.setPosition(CGPoint.make(GAME_WIDTH/2, GAME_HEIGHT/2)); 
    addChild(background); 

我在這裏做錯了什麼? Cocos2D不支持如此大的圖像用於精靈嗎? (分辨率爲800 * 1280) 任何幫助將不勝感激!

因爲我現在可以上傳圖片,這裏是什麼樣的視覺效果是怎麼了:

The image as it is supposed to look

而且在我的遊戲問題:

enter image description here

,你可以看,這個問題很難形容。這個問題只存在於這幅較大的圖像中。我在GIMP中手動縮放它,然後將它放大到遊戲中,看起來很好(除了分辨率較低外)。我也嘗試縮小這個更大的圖像,這仍然導致同樣的問題。希望你們能幫助我,因爲我不知道可能會導致這個錯誤的原因。特別是因爲我讀到Cocos2D的最大支持的圖像大小是2048 * 2048,並且我的圖像完全在此範圍內。

感謝您提供任何幫助!

回答

1

這是由於對紋理的大小限制。 Coсos2d-android支持最大尺寸爲1024 x 1024像素的圖片。

我面臨同樣的問題,並尋找解決方法。

編輯

我發現org.cocos2d.opengl包裝中的溶液 在cocos2d項目打開的文件CCTexture2d.java,並從1024更改kMaxTextureSize 2048

+0

謝謝你!這絕對有效,現在一切都運行完美,沒有那個bug =] – Intrivix

+0

很高興幫助你=) – rstk

0

我不確定,因爲從你的代碼,看着cocos2d代碼,我看不出明確的原因,爲什麼會發生這種情況,但考慮到你在屏幕上顯示的精靈數量,我肯定會看看我對this問題的回答,因爲你可能會碰到cocos2d在多個精靈周圍出現的奇怪的小渲染缺陷之一。不會傷害到試圖製作spritesheet,而且它確實是在cocos中實際執行sprites的正確方法。

此外,絕對創建一個幫手實用程序來確定設備與原始圖像尺寸相比的縮放比例,與iphone不同,android的屏幕分辨率幾乎沒有任何變化,而且有一點「如果您想在任何其他設備上使用此工具,現在將會爲您節省大量時間。

+0

你有什麼引導或者幫助,以使用該精靈表程序?據我可以告訴它只有鏈接圖像,我基本上只使用2個圖像的移動精靈和一個背景,所以我需要更多的解釋,這個精靈表如何工作在Cocos2D內。 還有,我告訴cocos2d的規模呈現大小並保持縱橫比,但我已經嘗試過編程縮放背景圖像和真正地沒有工作好。你的意思是我應該縮小物理圖像紋理時,我加載它? – Intrivix

+0

此外,即使僅有75%的物理下來然後規模爲高檔渲染對圖像很好的工作... – Intrivix

0

你應該嘗試做一種方法來添加背景,我這樣做就像這樣,試試這個希望它會幫助你滿...在這裏addBackGroundScene是我的方法,我用這種方法添加我的背景, scrXScaleFactor是維護我的屏幕縮放部分試試這個...

private void addBackGroundScene() { 
     CCSprite bgForLevel1 = addBackgroundAtOrigin("prelevel1/bgMenu.jpg"); 
     bgForLevel1 .setScaleX(scrXScaleFactor); 
      bgForLevel1 .setAnchorPoint(0, 0);   
      addChild(bgForLevel1); 

    } 
+0

謝謝,但是這似乎不只是從製作在構造函數中的背景非常不同。我確實在擴大圖像,但我的偏好是能夠使用全尺寸圖像作爲背景,而不必縮小較小的圖像。 – Intrivix