Cocos2dx 3.3 Реализация анимации

Я новичок в разработке cocos2dx. Я почти изучил весь базовый уровень cocos2dx (версия 3.3) в Android, используя язык cpp. Я показал, что есть много обновлений по cocos2dx.org.

В настоящее время в Android я занимаюсь разработкой игры «тетрис» с использованием cocos2dx версии 3.3, и я хочу знать, как лучше всего добиться потрясающей анимации, такой как тикающие бомбы, взрыв бомбы, вращение отображения игрового счета, всплывающие и исчезающие воздушные шары с увеличением игрового счета. Мне было интересно о реализации анимации cocos2dx в Android с использованием C ++. Нам также нужно сделать игру, которая бы поддерживала многоэкранную поддержку, у меня было много запросов, все эти точки не могли найти много информации через Google.

Я прекрасно показываю поддержку системы гидролокатора для начинающих, мы действительно это ценим, я просмотрел все видео, которые поделились системой гидролокатора через YouTube. Я многому там учусь. Я хочу знать, продвинутый уровень анимации в Android в Cocos2DX.

Мы ищем любую помощь, будем благодарны.

Спасибо

1

Решение

вот мой appmacros.h фильр ..

#ifndef __APPMACROS_H__
#define __APPMACROS_H__

#include "cocos2d.h"#define DESIGN_RESOLUTION_480X320    0
#define DESIGN_RESOLUTION_480X800    1
#define DESIGN_RESOLUTION_1024X768   2
#define DESIGN_RESOLUTION_1280X800   3
#define DESIGN_RESOLUTION_2048X1536  4

/* If you want to switch design resolution, change next line */
#define TARGET_DESIGN_RESOLUTION_SIZE  DESIGN_RESOLUTION_1280X800

typedef struct tagResource
{
cocos2d::CCSize size;
char directory[100];
}Resource;

static Resource smallResource  =  { CCSizeMake(480, 320),   "iphone" };
static Resource mysmallResource  =  { CCSizeMake(800, 480),   "iphone" };
static Resource mediumResource =  { CCSizeMake(1024, 768),  "ipad"   };
static Resource myResource =  { CCSizeMake(1280, 800),  "ipad" };
static Resource largeResource  =  { CCSizeMake(2048, 1536), "ipadhd" };

#if (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_480X320)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(480, 320);
#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_480X800)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(800, 480);
#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_1024X768)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(1024, 768);
#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_2048X1536)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(2048, 1536);
#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_1280X800)
static CCSize designResolutionSize = cocos2d::CCSizeMake(1280, 800);
#else
#error unknown target design resolution!
#endif

// The font size 24 is designed for small resolution, so we should change it to fit for current design resolution
#define TITLE_FONT_SIZE  (cocos2d::CCEGLView::sharedOpenGLView()->getDesignResolutionSize().width / myResource.size.width * 24)

#endif /* __APPMACROS_H__ */

теперь мы можем использовать этот класс в appdelegate .. так что мой appdelegate выглядит как …

#include "AppDelegate.h"#include "MenuLayer.h"#include "AppMacros.h"#include "SimpleAudioEngine.h"#include "cocos2d.h"

USING_NS_CC;AppDelegate::AppDelegate() {

}

AppDelegate::~AppDelegate() {

}
void AppDelegate::initGLContextAttrs()
{
//set OpenGL context attributions,now can only set six attributions:
//red,green,blue,alpha,depth,stencil
GLContextAttrs glContextAttrs = {8, 8, 8, 8, 24, 8};

GLView::setGLContextAttrs(glContextAttrs);
}

bool AppDelegate::applicationDidFinishLaunching() {

// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLViewImpl::create("My Game");
director->setOpenGLView(glview);
}

CCLOG("%s","applicationDidFinishLaunching ");
// initialize director
//  CCDirector* pDirector = CCDirector::sharedDirector();
//  CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();

director->setOpenGLView(glview);

// Set the design resolution
glview->setDesignResolutionSize(designResolutionSize.width,
designResolutionSize.height, kResolutionFixedWidth);

//CCSize frameSize = pEGLView->getFrameSize();
CCSize frameSize = director->getVisibleSize();

// if the frame's height is larger than the height of medium resource size, select large resource.
if (frameSize.width > myResource.size.width) {

director->setContentScaleFactor(
largeResource.size.width / designResolutionSize.width);

}
// if the frame's height is larger than the height of small resource size, select medium resource.
else if (frameSize.width > mediumResource.size.width) {

director->setContentScaleFactor(
myResource.size.width / designResolutionSize.width);

} else if (frameSize.width > mysmallResource.size.width) {

director->setContentScaleFactor(
designResolutionSize.width / mediumResource.size.width);

} else if (frameSize.width > smallResource.size.width) {

director->setContentScaleFactor(
designResolutionSize.width / mediumResource.size.width);

}
// if the frame's height is smaller than the height of medium resource size, select small resource.
else {

director->setContentScaleFactor(
designResolutionSize.width / smallResource.size.width);

}

// turn on display FPS
director->setDisplayStats(false);

// set FPS. the default value is 1.0/60 if you don't call this
director->setAnimationInterval(1.0 / 60);CCScene *pScene = MenuLayer::scene();director->runWithScene(pScene);return true;
}

// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground() {
CCDirector::sharedDirector()->stopAnimation();

// if you use SimpleAudioEngine, it must be pause
CocosDenshion::SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();}

// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground() {
CCDirector::sharedDirector()->startAnimation();

// if you use SimpleAudioEngine, it must resume here
CocosDenshion::SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();}
1

Другие решения

я также новичок в cocos2dx 3.3. хорошо я использую анимацию для взрыва (взрыва) с помощью (.plist) эффектов частиц
Для начала вам нужен файл анимации .plist. есть онлайн-редактор для создания файла .plist. Вы можете проверить это
вот ссылка. http://www.effecthub.com/particle2dx

теперь вы можете использовать эту строку кода

CCParticleSystemQuad *system = CCParticleSystemQuad::create("explodeEffect.plist");

system->setTexture(CCTextureCache::sharedTextureCache()->addImage("yourplayer.png"));
system->setDuration(0.05);
system->setScale(3.0f);
system->setPosition(yourplayer->getPosition().x, yourplayer->getPosition().y);
this->addChild(system,1);
system->setAutoRemoveOnFinish(true);

это поможет тебе

1