//cocos2d 에서 여러이미지를 애드 시키면 메모리에도 문제가 있는것같고 용량도 커지고 비효율적인것 같습니다
//plist 파일을 이용하면 효율적으로 애니매이션을 구현할수 있습니다(plist 만드는 방법은 검색을^^;)
//plist 파일을 이용해서 100까지 숫자가 증가하는 간단한 애니매이션을 만들어 보았습니다.
//asset 폴드에 cnum.png , cnum.plist 를 넣어주셔야 합니다(첨부했습니다)
ScoreSetting.java
//plist 파일을 이용하면 효율적으로 애니매이션을 구현할수 있습니다(plist 만드는 방법은 검색을^^;)
//plist 파일을 이용해서 100까지 숫자가 증가하는 간단한 애니매이션을 만들어 보았습니다.
//asset 폴드에 cnum.png , cnum.plist 를 넣어주셔야 합니다(첨부했습니다)
ScoreSetting.java
===================================================================================================
import org.cocos2d.layers.CCLayer;
import org.cocos2d.nodes.CCNode;
import org.cocos2d.nodes.CCSprite;
import org.cocos2d.nodes.CCSpriteFrame;
import org.cocos2d.nodes.CCSpriteFrameCache;
import org.cocos2d.nodes.CCSpriteSheet;
public class ScoreSetting {
CCLayer baseLayer;
private final int scoreZvalue=11;
private final int scoreTag=48;
private CCSpriteFrameCache cache;
CCSpriteFrame[] cNum = new CCSpriteFrame[10];
CCSprite[] uspScore = new CCSprite[10];
private int idxCount=0;
public ScoreSetting(String pListname, CCLayer bLayer) {
cache = CCSpriteFrameCache.sharedSpriteFrameCache();
cache.addSpriteFrames(pListname +".plist");
CCSpriteSheet.spriteSheet(pListname +".png");
this.baseLayer = bLayer;
setPlist();
}
public CCSpriteFrame getSpriteFrame(String name){
return cache.getSpriteFrame(name);
}
public void setPlist(){
for(int i = 0 ; i < 10 ; i++){
cNum[i]= getSpriteFrame("00"+i+".png");
}
}
public void cal_PreScore(int calScore){//스코어 int 값을 얻어와서 이에 맞는 스프라이트 배열로 만들어서 저장해준다
int tot=1;
int mok;
int mod=calScore;
int calTot=calScore;
while(calTot>=10){
calTot=calTot/10;
tot=tot*10;
}
while(tot>=1){
mok = mod /tot;
uspScore[idxCount] = CCSprite.sprite(cNum[mok]);
mod = mod %tot;
tot=tot/10;
idxCount++;
}
}
public void addScore(float x,float y){//방향에 맞게 스코어를 게임 화면에 애드해 준다
for(int i=idxCount-1 ; i >= 0 ; i-- ){
baseLayer.addChild(uspScore[i],scoreZvalue,scoreTag);
uspScore[i].setPosition(x-(27*(idxCount-i-1)),y);
}
idxCount=0;
}
public void updateScore(int uScore){//점수가 올라갈때 점수를 제거한 후 업데이트 해준다
CCNode[] nodes = null;
nodes = (CCNode[]) baseLayer.getChildren().toArray(new CCNode[0]);
for (int i = 0; i < nodes.length; i++) {
int tag = nodes[i].getTag();
if(tag == scoreTag) {//스코어제거
baseLayer.removeChild(nodes[i], true);
}
}
idxCount=0;
cal_PreScore(uScore);
}
public CCSprite[] getSprite(){
return uspScore;
}
public int getIdxCnt(){
return idxCount;
}
}
===================================================================================================
ShowResultLayer.java
===================================================================================================
ShowResultLayer.java
===================================================================================================
import org.cocos2d.layers.CCColorLayer;import org.cocos2d.layers.CCLayer;
import org.cocos2d.layers.CCScene;
import org.cocos2d.types.ccColor4B;
public class ShowResultLayer extends CCColorLayer {
ScoreSetting pScore;
private int startPercent = -1;
protected ShowResultLayer(ccColor4B color) {
super(color);
showResut();
// TODO Auto-generated constructor stub
}
private void showResut() {
pScore = new ScoreSetting("cnum", this);
pScore.cal_PreScore(0);
pScore.addTopScore(255f, 305f);
schedule("updatepercent", 0.02f);
}
public void updatepercent(float dt) {
startPercent++;
pScore.updateScore(startPercent);
pScore.addTopScore(255f, 305f);
if (startPercent == 100) {
unschedule("updatepercent");
}
pScore.addScore(255f, 305f);
}
public static CCScene scene() {
CCScene scene = CCScene.node();
CCLayer layer = new ShowResultLayer(ccColor4B.ccc4(255, 255, 255, 255));
scene.addChild(layer);
return scene;
}
}
===================================================================================================
===================================================================================================
'Cocos2d' 카테고리의 다른 글
Cocos2d Android : 8장. cocos2d 몇가지 팁 (0) | 2012.01.20 |
---|---|
Cocos2d Android : 7장. Box2d DynamicBody (2) | 2012.01.14 |
Cocos2d Android : 5장 . Cocos2d Scene 전환 효과 (1) | 2012.01.06 |
Cocos2d Android : 4장 . Cocos2d 액션 정리 (0) | 2012.01.06 |
Cocos2d Android : 3장 . CCParticleSystem 사용법 (0) | 2012.01.06 |