FAQ:
cocos2d de I-Phone: Como atualizar o código de cocos2d-I-Phone em um projeto criado com um Padrão de Projeto de cocos2d? How to update the cocos2d-iphone code in a project created with a cocos2d Project Template?Procure o meu cocos2d documentos de perguntas feitas por usuários de I-Phone & Seminários
Por favor observe que a pesquisa de blog na esquina certa superior não procura os meus documentos de perguntas feitas por usuários e Seminários.- Observe: por favor não compartilhe conexões de carregamento diretas a arquivos PDF, as conexões de carregamento vencem depois de uns minutos de par!
A melhor solução seria usar o controle de fonte em conjunto com o meu Padrão de Projeto de Xcode. Entendo que não todo o mundo está nesta situação afortunada e que usar software de controle de fonte para fundir modificações é tudo menos trivial para o não iniciado. Portanto eu quis delinear os passos que você tem de fazer para assegurar que você ainda pode fazer um upgrade à última versão cocos2d mesmo se você começou de um Padrão de Projeto de cocos2d. So i wanted to outline the steps you need to do to ensure you can still upgrade to the latest cocos2d version even if you started from a cocos2d Project Template.
O esforço que entra nele e o montante de problemas dos quais você enfrentará depende tanto de de que versões você está fazendo um upgrade de como a bem como o seu próprio texto fonte, pela maior parte que entrelaçado o seu código é com o código do motor cocos2d.
O apoio antes que você comece o procedimento de upgrade
Faça uma cópia do seu projeto em caso de que você tem de começar ou você vai se encontrar em uma situação de fim morta e decidirá que você não atualizaria.
Tenha em mente que enquanto pode parecer razoável fazer um upgrade só das partes do motor cocos2d que você é interessado em, na verdade isto somente soletra a preocupação e muitas vezes não trabalhará também. Ou de modo nenhum. Portanto você estará fazendo um upgrade de todos de cocos2d. So you'll be upgrading all of cocos2d.
Também, se você se está retardando longe atrás, por exemplo você ainda está usando cocos2d v0.8x ou abaixo e quer fazer um upgrade a v0.99 as diferenças podem ser tão enormes que um upgrade está ao lado de impossível. Em vez disso você pode querer tentar uma abordagem diferente #2 neste caso (veja abaixo).
Aproxime-se #1:
substitua arquivos cocos2dEsta aproximação só é recomendada se a sua versão cocos2d que você está usando atualmente não se retardar longe atrás da corrente cocos2d a versão você quer fazer um upgrade a. Como regra prática, se são menos de 0.1 números da versão você pode ser capaz de ter sucesso com esta aproximação, de outra maneira tentar a aproximação #2 abaixo! Esta aproximação não é para o fraco do coração e um bom montante de conhecimento de organização de projeto e compreensão que os erros de compilador são esperados. This approach is not for the faint of heart and a good amount of project setup knowledge and understanding compiler errors is expected.
- carregue da última versão cocos2d e abra o zíper se necessário, suponho que esteja agora em uma pasta denominada cocos2d-I-Phone
- do cocos2d-I-Phone pasta copiam este arquivo:
/cocos2d
/CocosDenshion
/cocoslive
/external/Box2d
/external/Chipmunk
/external/FontLabel
/external/libpng
/external/TouchJSON
/external/Tremor
- elimine o arquivo existente no seu projeto e logo cole este arquivo no lugar (somente não os atualize porque de outra maneira você não retirará algum possivelmente eliminou arquivos da nova versão cocos2d). Observe: um pouco do arquivo estará em posições diferentes portanto você deveria copiá-los um por um e cuidar que você os copia ao lugar correto!some of the folders will be in different locations so you may have to copy them one-by-one and take care that you copy them to the correct place!
- abra Xcode e acrescente qualquer arquivo acrescentado pela nova versão cocos2d que não são acrescentados ao seu projeto ainda
- retire qualquer arquivo cocos2d do projeto que é mostrado em vermelho, eles devem ter sido retirados da nova versão cocos2d
Agora tente construir. Você adquirirá provavelmente muitos erros. Isto deve ser esperado. Fixe qualquer erro que está no seu código. Não tente fixar erros em cocos2d - você quer que o seu código trabalhe com a nova versão cocos2d, não outro caminho em volta! This is to be expected. Fix any errors that are in your code. Don't try to fix errors in cocos2d - you want your code to work with the new cocos2d version, not the other way around!
Se você não puder resolver todas as questões e eles parecem ser cocos2d interno então reexaminam isto todos os arquivos que podem ter sido acrescentados pela nova versão cocos2d também são acrescentados ao seu projeto. Se isto ainda não ajudar você pode ter mais sorte tentando a segunda aproximação.
Aproxime-se #2:
comece um novo projeto do padrão, logo re-acrescente o seu próprio código & ativosSe as diferenças de versão da versão cocos2d você está trabalhando atualmente com e aquele ao qual você quer fazer um upgrade são demasiado grandes você poderia querer tentar uma abordagem diferente. Como regra prática, se você se está retardando mais de 0.1 números da versão atrás desta aproximação podem ser mais razoáveis. Ele também faz a maior parte de sentido se o seu projeto se compuser de não demasiadas classes e arquivos. It also makes the most sense if your project consists of not too many classes and files.
Neste caso, instale a nova versão cocos2d e comece um novo projeto com a nova versão cocos2d. Então simplesmente re-acrescente o seu próprio código e recursos àquele projeto e fixe algum compila erros que poderiam aparecer. Deste modo você pode estar seguro que qualquer erro é devido ao seu código que não é atualizado para trabalhar com a última versão cocos2d ao contrário de não saber se você realmente substituiu e acrescentou todos os arquivos cocos2d corretamente, como estará o caso com a aproximação #1 em cima. In this way you can be certain that any errors are due to your code not being updated to work with the latest cocos2d version as opposed to not knowing whether you've really replaced and added all cocos2d files correctly, as will be the case with approach #1 above.
Mas não levante as suas esperanças: você ainda provavelmente receberá uma tonelada de erros. Especialmente se o seu código é construído contra uma versão cocos2d que não usou o CENTÍMETRO CÚBICO namespace ainda (todos os nomes de classe cocos2d são prefixados agora com o CENTÍMETRO CÚBICO). Especially if your code is built against a cocos2d version which didn't use the CC namespace yet (all cocos2d class names are now prefixed with CC).









Esclarecimento de correio. Agradecimentos!
E, naturalmente, tenho alguns pergunta
- tudo é relativo, mas para o código comum é melhor para usar NSString, NSArray (e pagar o preço de criar novos objetos) ou os mutáveis? Que podem ser os parâmetros para selecionar entre cada um?
- Estou admirando-me se o novo I-Phone 4.0′s maior realização será uma questão. Os jogos que dirigem lisamente no I-Phone 1os e 2os dispositivos de geração correrão provavelmente demasiado rápido?
Oi Max,
duvido que os NSMutable* datasets sejam assassinos de realização. Não fiz nenhum teste mas estou bastante seguro que se você não os modificar em absoluto eles executarão provavelmente tão bom como os não-mutáveis. Agora, uma vez você *do* tem de modificar as tabelas ou cadeias está bem tê-los mutável para que o material seja cuidado para você nos bastidores. De outro lado, se você sabe que você só estará criando os itens uma vez mas nunca re-encomendar, retirar ou acrescentar que os outros então usam os não-mutáveis. Para mim é uma matéria de caso de uso em vez de realização. Now, once you *do* need to change the arrays or strings it’s good to have them mutable so that stuff is taken care for you behind the scenes. On the other hand, if you know that you’ll only be creating the items once but never re-order, remove or add others then use the non-mutable ones. For me it’s a matter of use case rather than performance.
Os jogos não correrão mais rápido em mais novos dispositivos. o cocos2d's CCDirector assegura-se disto. Você melhora framerates naturalmente mas não mais rápido gameplay. Isto mantém-se ser verdade para todos os motores de jogo modernos. You do get better framerates of course but not faster gameplay. That holds true for all modern game engines.