2012-01-12 79 views
0

我有這個遊戲像塗鴉跳躍雪碧突然消失了cocos2d

我插在

玩家觸發子彈,並刪除

我插入的NSLog到目標的玩家一些怪物和子彈這兩個所以我知道如果子彈火災和目標顯示

所有在模擬器工作平穩ios 4.0

但是當每次我的設備

子彈上安裝它和目標似乎未出現(是隻有這兩個遊戲依然流暢運行)

,但每次我檢查控制檯我可以看到子彈的NSLog和目標

我嘗試了3周不同的手機的iOS 4.0,5.0和4.2

現在即時通訊混亂,如果有什麼似乎是問題

我在谷歌檢查相同的問題,但我似乎無法找到一個

我也檢查拼寫和迷你問題,但它仍然發生。

什麼似乎是造成這個問題?


PS:應用IM工作是過時的,它是舊版本的cocos2d的。這個 影響它嗎?我嘗試升級,但我有這麼多的錯誤,我不 知道這就是爲什麼我回到默認。


妖怪都出現了約0.5秒,然後就會突然消失這是因爲spriteMoveFinished的?

這裏是代碼(目標):

-(void)addTarget { 

    Sprite *target =[Sprite spriteWithFile:@"him.png"]; 


    CGSize winSize = [[Director sharedDirector]winSize]; 
    int minX = winSize.width/6; 
    int maxX = winSize.width - target.contentSize.width/2; 
    int rangeX = maxX - minX; 
    int actualX = (arc4random() % rangeX) + minX; 

    target.position = ccp(actualX,500); 
    NSLog(@"Location:%f",target.position); 
    [self addChild:target]; 

    int minDuration = 2.0; int maxDuration = 4.0; 
    int rangeDuration = maxDuration - minDuration; 
    int actualDuration = (arc4random() % rangeDuration)+minDuration; 

    id actionMove = [MoveTo actionWithDuration:actualDuration position:ccp(actualX, -target.contentSize.height/2)]; 
    id actionMoveDone = [CallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)]; 
    [target runAction:[Sequence actions:actionMove,actionMoveDone, nil]]; 
    target.tag = 1; 
    [_targets addObject:target]; 
} 

(子彈):

-(void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    AtlasSpriteManager *spriteManager = (AtlasSpriteManager*)[self getChildByTag:kSpriteManager]; 
    AtlasSprite *bird = (AtlasSprite*)[spriteManager getChildByTag:kBird]; 

    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInView:[touch view]]; 
    location = [[Director sharedDirector]convertCoordinate:location]; 


    Sprite *projectile = [Sprite spriteWithFile:@"psn.png"]; 

    projectile.position = ccp(bird.position.x,bird.position.y); 

    CGSize winSize = [[Director sharedDirector]winSize]; 

    int offX = location.x - projectile.position.x; 
    int offY = location.y - projectile.position.y; 

    [self addChild:projectile]; 

    float scalarX = 1.0f; 
    if(offX < 0.0f) scalarX = -1.0f; 
    int realX = scalarX * (winSize.width + (projectile.contentSize.width/2)); 
    float ratio = (float) offY/(float) offX; 
    int realY = (realX *ratio) +projectile.position.y; 
    CGPoint realDest = ccp(realX,realY); 

    int offRealX = realX - projectile.position.x; 
    int offRealY = realY - projectile.position.y; 
    float length = sqrtf((offRealX*offRealX)+(offRealY*offRealY)); 
    float velocity = 480/1; 
    float realMoveDuration = length/velocity; 

    [projectile runAction:[Sequence actions:[MoveTo actionWithDuration:realMoveDuration position:realDest], 
          [CallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)], nil]]; 
    NSLog(@"Shoot!"); 
    projectile.tag = 2; 
    [_projectiles addObject:projectile]; 


} 

感謝我希望這將得到解決......

+0

嘗試澄清此問題的條件:啓用繪製sprite界限('ccConfig.h'中的'#define CC_SPRITE_DEBUG_DRAW 1'),將紋理更改爲某個檢查圖像,在另一個圖像編輯器中重新保存企鵝圖像...讓我們知道,iDevice究竟發生了什麼問題。 – brigadir 2012-01-12 06:55:22

+1

你的紋理可能有問題嗎?子彈和目標使用什麼樣的紋理?和什麼大小? – purplelilgirl 2012-01-12 06:42:54

+0

@brigadir我不認爲這個問題是關於紋理,因爲我試圖替代我的目標,並且它也沒有出現的雪碧..謝謝 – NoobMe 2012-01-12 09:09:51

回答

2

奇。東西快速嘗試將是:

  • 刪除設備本身的應用程序(按住應用程序圖標,直到「X」出現,並刪除它),然後做一個乾淨的構建。這將強制所有資產在電話上被替換。

  • 您是否啓用了視網膜支持?如果是這樣,你的資源中是否有一個名爲'him-hd.png'的文件損壞?如果檢測到視網膜設備,它會先嚐試加載那個。

  • 它在視網膜設備的模擬器上失敗嗎?您可以更改iOSSimulator菜單欄中正在模擬的設備。

  • 當您將圖像添加到項目中時,您是否選擇了「將項目複製到目標組的文件夾(如果需要)?這很重要,否則圖像將不會包含在軟件包中

  • 最後,您是否檢查過圖像的目標成員,以便將其設置爲應用目標?您可以通過選擇xCode中的圖像並查看文件檢查器 - >目標成員身份來檢查此問題。應用程序旁邊應該有一個檢查。

+0

我怎麼做最後一部分?即時通訊xcode 3.2 我真的很困惑這一點。 〜。〜 – NoobMe 2012-01-12 10:01:02

+0

我似乎記得你可以在xCode,Get Info中右鍵單擊png,它應該在彈出的屏幕上(我認爲) – davbryn 2012-01-12 10:26:31

+0

沒有目標會員在這裏xD,但你認爲還有其他人方法?除了你發佈的這些......這真的讓我很難過。 – NoobMe 2012-01-12 10:29:35

0

我已經有類似的問題,請檢查您創建的對象的Z索引。

可能發生的是你正在渲染它們,但是你將它們渲染在你的背景之後,因爲你的背景具有更高的(負數接近0),子彈和目標。

檢查& _projectiles在做什麼,你_targets他們可能會改變Z值

而且良好的措施進行清理&乾淨的構建

清潔

產品>清潔

Clean Build

產品>保留選項(在鍵盤上)&點擊清潔(應更改爲乾淨的構建)

+0

我試圖增加一個z值,但它仍然是一樣的... – NoobMe 2012-01-12 03:55:01

+0

仍然存在?有沒有其他方法來解決這個 – NoobMe 2012-01-12 09:28:55

1

以前沒有提到的一個建議:確保文件名的大小寫匹配!

例如,如果文件名爲「Him.png」,並且在cocos2d中將圖像加載爲「him.png」,則該模式可用於模擬器,但在設備上會失敗,因爲iOS設備具有區分大小寫的文件系統。

這不僅限於iOS設備。 Mac OS X用戶還可以選擇安裝可能導致相同問題的區分大小寫的文件系統。

因此,最好避免在文件名中使用大寫字母。

+0

它的全部在小型大寫字母。 him.png – NoobMe 2012-01-12 10:38:28

+0

先生,我已經對這個問題進行了實驗,並且發現我的精靈正在出現,但它正在約0.5秒內消失。我試圖消除它的運動,然後我看到它出現在屏幕上,所以我猜它的運動導致了這個問題。謝謝,如果你會幫助 – NoobMe 2012-01-13 10:18:29

0

問題是否已解決:

我不認爲這是正確的方式...但我試圖消除actionMoveDone線

好像當我刪除它精靈工作正常是造成這個問題。

我還想知道爲什麼會發生這種情況...

感謝所有誰回答...

0

我知道這個問題解決了,但是這可能幫助別人......我的問題是,這是添加精靈到現場的代碼也被設置box2d的身體,所以當世界步入精靈被移動到屏幕外的位置。修正是在我將精靈放置在場景中時設置身體的位置。