标签: cocos2d-x

Cocos2d-x vs cocos2d-android为Android游戏

在我的一个项目中使用'cocos2d-iphone'之后,我正在尝试决定我应该为Android游戏使用哪种Cocos2d.我个人的利弊清单:

的Cocos2D-X

专业人士:将游戏带入iOS后应该更容易,也可能是其他平台

缺点/疑惑:在Android上调试c ++代码(简单与否?),NDK应用程序与各种Android设备的兼容性(有多少问题?),访问特定于平台的功能(应用程序内购买等)

的cocos2d-机器人

优点:所有Java,更易于设置和访问特定于平台的功能

缺点:必须从Java转换为c ++或Objective-C用于其他平台

我没有想到的任何一个选项是否存在其他问题?如果有人必须做出这个选择,你选择了什么?为什么?

cocos2d-x cocos2d-android

19
推荐指数
2
解决办法
2万
查看次数

权限被拒绝打开ligEGL着色器缓存文件

正如我在标题中提到的那样,我的应用程序构建成功但显示空白屏幕,并在我在设备上运行它几秒后退出(SS GLX Tab3 Intel).logcat显示 error opening cache file /data/data/com.abc.testapp/cache/com.android.opengl.shaders_cache: Permission denied (13)libEGL标签.

有谁知道这意味着什么以及如何解决它?

任何帮助将不胜感激谢谢

android eclipse-cdt cocos2d-x cocos2d-x-3.0

18
推荐指数
1
解决办法
2462
查看次数

当我调用setFlipped(true)时,为什么动画不会水平翻转?

我有一些精灵,玩家角色面向右边.我可以从那些精灵中创建一个动画就好了.问题是,如果我想让精灵面向左边.

我做以下事情:

Sprite* p = Sprite::createWithSpriteFrameName("Jumping");
p->setPosition(Vec2(_visibleSize.width/2,_visibleSize.height/2));
this->addChild(p);
p->setFlippedX(true);
Vector<AnimationFrame*> animFrames;
float frameRate = 0.32f;
std::vector<std::string> frameNames = {"Running 0","Running 1","Running 2"};

for (int i =0; i<3;i++){
    auto frameName = frameNames.at(i);
    auto spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName(frameName);
    ValueMap userInfo;
    userInfo["frame_index"] = Value(i);
    auto animFrame = AnimationFrame::create(spriteFrame, frameRate, userInfo);
    animFrames.pushBack(animFrame);
}

auto animation = Animation::create(animFrames, frameRate);
auto animationAction = Animate::create(animation);
p->runAction(RepeatForever::create(animationAction));
p->setFlippedX(true);
Run Code Online (Sandbox Code Playgroud)

动画运行,但动画仍显示面向右侧的玩家.问题是什么?为什么setFlippedX在这种情况下不起作用?

我正在使用Cocos2d-x 3.13.1.我找不到任何错误,所以我认为我做错了什么.

cocos2d-x cocos2d-x-3.0 cocos2d-x-3.x

18
推荐指数
1
解决办法
2万
查看次数

类上的外部定义错误,但它在头文件中声明

现在这是一个奇怪的问题.我两天前编码并停止,然后继续.在我的头文件(Fruit.h)上,我添加了一个名为animateGrow()like 的方法:

Fruit.h:

class Fruit {
private:
   // Member variables here

public:
   // Other methods here
   void animateGrow( );
};
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在CPP文件中添加相同的方法时,我收到Out-of-line definition of 'animateGrow' does not match any declaration in 'Fruit'错误.它在标题中声明,但Xcode似乎无法找到该方法.

Fruit.cpp:

#include "SimpleAudioEngine.h"
#include "Fruit.h"
#include "Tree.h"

using namespace cocos2d;
using namespace CocosDenshion;

Fruit::Fruit( ) {
   // Constructor
}

// Getter Methods
// Setter Methods
// Other Methods

void Fruit::animateGrow( ) {
   // I get an error here when I type it.
} …
Run Code Online (Sandbox Code Playgroud)

c++ xcode cocos2d-x

15
推荐指数
1
解决办法
2万
查看次数

使用JNI将android.content.Context参数发送到函数

我正在尝试创建一个方法来检查需要Context参数的Internet连接.JNIHelper允许我用参数调用静态函数,但我不知道如何"检索"Cocos2d-x Activity类以将其用作参数.

public static boolean isNetworkAvailable(Context context) {
    boolean haveConnectedWifi = false;
    boolean haveConnectedMobile = false;
    ConnectivityManager cm =
        (ConnectivityManager) context.getSystemService(
    Context.CONNECTIVITY_SERVICE);
    NetworkInfo[] netInfo = cm.getAllNetworkInfo();
    for (NetworkInfo ni : netInfo) {
        if (ni.getTypeName().equalsIgnoreCase("WIFI"))
            if (ni.isConnected())
                haveConnectedWifi = true;
        if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
            if (ni.isConnected())
                haveConnectedMobile = true;
    }
    return haveConnectedWifi || haveConnectedMobile;
}
Run Code Online (Sandbox Code Playgroud)

和c ++代码是

JniMethodInfo methodInfo;
if ( !JniHelper::getStaticMethodInfo( methodInfo,
    "my/app/TestApp", "isNetworkAvailable", "(Landroid/content/Context;)Z")) {
        //error
        return;
}
CCLog( "Method found and loaded!");
methodInfo.env->CallStaticBooleanMethod( methodInfo.classID,
methodInfo.methodID);
methodInfo.env->DeleteLocalRef( methodInfo.classID);
Run Code Online (Sandbox Code Playgroud)

java-native-interface android cocos2d-x

14
推荐指数
1
解决办法
5185
查看次数

如何在cocos2d-x中设置图层的背景颜色?

我一直在使用cocos2d-x编写游戏,并遇到了改变背景颜色的问题.我在cocos2d中找到了一个例子,但显然这仅适用于用Obj-c编写的cocos2d.基本上这个想法是使用CCLayerColor而不是CCLayer,当构造函数被触发时设置颜色.

有谁知道如何更改cocos2d-x中的背景颜色?看起来很简单,我很确定我错过了一些明显的东西.

c++ cocos2d-iphone cclayer cocos2d-x

14
推荐指数
4
解决办法
3万
查看次数

如何在Xcode中包含cocos2d-x模板?

我正在尝试遵循指南,指南经常被引用为Cocos2d-x的优秀教程.

问题是我对Cocos2d-x(2.2和3.0 alpha0)的下载不包括教程指示的文件install-templates-xcode.sh.

知道这里发生了什么吗?我搜索了那个词,没有出现任何内容,所以我假设它没有隐藏在文件中更深层次.

出于沮丧,我下载了cocos2d-iphone,该文件夹显然有install-templates.sh文件.我宁愿为多平台开发,但这个简单的问题真的让我烦恼.我只是希望能够创建一个Xcode项目并选择cocos2d-x模板(如上面链接的教程中所示).

请参阅github存储库:

的Cocos2D-X

的Cocos2D-iPhone

请注意,iPhone存储库具有install-templates文件.

也许我错过了一些明显的东西,通常就是这种情况.无论如何,非常感谢帮助.

xcode templates cocos2d-iphone cocos2d-x

14
推荐指数
1
解决办法
1万
查看次数

Android中的Cocos2d-X的TDD

如何在eclipse的cocos2d-x场景中为" 是否添加精灵 "编写TDD .这是我的代码

CCSprite *sprite  =null;

//adding sprite code
sprite = new CCSprite();
sprite->initWithSpriteFrameName(“abc.png");
this->addChild(sprite);
Run Code Online (Sandbox Code Playgroud)

任何博客或正确方向的帮助将不胜感激.谢谢

eclipse tdd android ccsprite cocos2d-x

14
推荐指数
1
解决办法
215
查看次数

在android eclipse项目中使用新的firebase sdk

刚刚宣布了具有强大功能的新firebase,但根据文档(https://firebase.google.com/docs/android/setup#prerequisites),现在需要android studio(以及gradle).目前在我的cocos2d-x应用程序中,我必须使用ADT/Eclipse来构建应用程序,因为还没有支持gradle(但是cocos2d-x团队正在开发它).我现在使用的是旧版本的sdk,它只是一个jar文件.有没有办法在eclipse中使用新的firebase?让我最担心的是插件:

apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)

eclipse android adt cocos2d-x firebase

14
推荐指数
2
解决办法
1万
查看次数

如何在cocos2d-x中设置精灵动画时加载场景?

我有一个"舞台选择"场景和一个"游戏"场景.然而,当用户按下按钮以开始游戏场景时,在按下和场景显示之间存在延迟(在旧设备上大约2秒或更多).所以我认为我应该创建一个加载场景.

所以我现在正在做的是将"加载"场景传递给一个std :: function,它在加载场景出现后0.1秒被调用.此函数具有启动"游戏"场景的代码,如下所示:

用于创建加载场景.

auto loading_scene = LoadingScene::createLoadingScene([stage_course]() {

    Director::getInstance()->replaceScene(Game::createScene(stage_course->course_id));

});

Director::getInstance()->replaceScene(loading_scene);
Run Code Online (Sandbox Code Playgroud)

加载游戏场景.

void LoadingScene::onEnter()
{
    Node::onEnter();

    call_after(0.1, callback_start);  
}
Run Code Online (Sandbox Code Playgroud)

结果是加载场景显示了一个正在运行的字符的简单动画精灵.起初我尝试在回调之前延迟1.0秒来检查精灵是否正常工作(确实如此,角色运行).但是当执行回调时(加载新场景的那个)它会停止移动并且在这样的情况下保持大约1-2秒,直到场景加载然后呈现它为止.

有没有人知道如何在场景加载时保持精灵动画,以便在显示"游戏"场景之前它永远不会停止运行?


编辑:

我正在使用cocos2d-x-3.8.

我的加载场景在其init函数中具有以下代码,用于创建用于为尖顶设置动画的动画:

// Create the sprite animation
Animation *animation = Animation::create();
for (int i = 0; i < INT16_MAX; i++)
{
    string frame_sprite_name = StringUtils::format("Interface/loading/0_%d.png",i);

    auto frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(frame_sprite_name);

    if (frame) {
        animation->addSpriteFrame(frame);
    } else {
        break;
    }
}

animation->setDelayPerUnit(0.15f);


Animate *animate = Animate::create(animation);


// Create a temporal sprite to run the animation

auto …
Run Code Online (Sandbox Code Playgroud)

c++ cocos2d-x cocos2d-x-3.0

13
推荐指数
1
解决办法
1894
查看次数