标签: cocos2d-x

Cocos2d-x CCArray - 对象和精灵

我是c ++和cocos2d-x的新手,我有一个问题.我有一个"projectile"它是CCSprite,好吧,我把它插入数组:

projectile->setTag(2);

_projectiles->addObject(projectile);
Run Code Online (Sandbox Code Playgroud)

但是当我需要它时:

CCSprite* proj;
CCARRAY_FOREACH(_projectiles,proj){
  CCSprite *projectile = proj;
  ...
Run Code Online (Sandbox Code Playgroud)

我有关于"_projectiles"的错误,里面有CCObject.对不起,我的英语不好,谢谢你!

c++ cocos2d-x

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

动画完成后如何删除精灵?

我正在使用 CCAnimation 类来使用具有多个 CCSprite 的动画。我想要的是:

动画完成后移除精灵

如果有人在这方面工作,请让我知道。我该怎么做。

android cocos2d-iphone cocos2d-x cocos2d-android

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

cocos2d-x:从另一个线程加载精灵不可能,任何模式?

我的计划的事实

  1. Cocos2d-x主循环在自己的线程中运行.我们称之为cocos2d-x-thread.
  2. 我有一个task_scheduler在自己的线程中运行,您可以在其中提交轻量级任务.我们称之为task_scheduler-thread.
  3. 每隔x毫秒,就会从task_scheduler线程发出一个回调.我们称之为task_scheduler-tick-callback.

我想做的事

我想在发出task_scheduler-tick-callback时加载一个sprite ,但是我不能从那个线程中执行它,所以我必须提交一些由cocos2d-x线程执行的工作.

问题

  1. 如何在接收此工作时使cocos2d-x-thread被执行?因为cocos2d-x已经运行了自己的循环,我想避免不惜一切代价将自定义代码注入cocos2d-x生成的项目.

任何模式?

编辑:想法 - >在cocos2d-x中为每个循环迭代调用的任何回调函数?那存在吗?我可以集成在调用我的工作片那样.

c++ multithreading design-patterns cocos2d-x

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

在C++中添加代码执行的延迟

假设我需要在延迟2秒的情况下调用一个函数.在cocos2d-x中,您可以使用以下操作:

auto action = Sequence::create(
    DelayTime::create(2), 
    CallFunc::create(
        [&]() {
            // here is the lambda function that does whatever you want after 2 seconds
        }
    ), 
    NULL
);

runAction(action);
Run Code Online (Sandbox Code Playgroud)

但是为了运行你需要的动作Node,这并不总是可用的.有些课程与课程无关Node.所以我想知道在C++ 11中为代码执行添加延迟的跨平台方式是什么?

c++ delay cocos2d-x cocos2d-x-3.0

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

无法在Cocos2dx 3.0中解析plist

在此输入图像描述

我想解析这个plist结构......请帮助

我现在使用的是

mainDictionary = __Dictionary::createWithContentsOfFile(plistPath.c_str());
__Dictionary *exit = (__Dictionary*)__Dictionary::createWithDictionary(
            (__Dictionary*)mainDictionary->objectForKey(std::string("otherButton")));
Run Code Online (Sandbox Code Playgroud)

但是有些钥匙缺少退出的决定权......

cocos2d-x cocos2d-x-3.0

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

如何检测通知中心是否已打开

在cocos2dx项目中,在iOS 10设备上,当向下扫描通知中心时,会发生巨大的帧速率下降.结果,当动画恢复ui时,其运动取决于Δt的元素被移动到无效位置.在我看来,操作系统正在将应用程序置于某种后台模式,但applicationDidEnterBackground不会被调用.当通知中心被向下/向上滑动时,有没有办法接收事件?

cocoa ios cocos2d-x cocos2d-x-3.0 ios10

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

从 Java 调用 Kotlin(找不到符号)

我正在尝试从 Java 调用 Kotlin 中的函数。
文档说这很容易。到目前为止,我已经关注了这篇文章,但没有运气。

https://kotlinlang.org/docs/java-to-kotlin-interop.html#package-level-functions

在 Java 中输入时,IDE 可以识别该类,但是当我编译时,它会显示 错误:找不到符号

非常欢迎任何帮助。

应用程序.kt

package org.cocos2dx.cpp

fun getTime() { /*...*/ }
Run Code Online (Sandbox Code Playgroud)

应用程序活动.java

    public void test1() {
        org.cocos2dx.cpp.AppKt.getTime();
    }
Run Code Online (Sandbox Code Playgroud)

项目结构

/proj.android
   /app
       /src
          /org.cocos2dx.cpp
              app.kt
              AppActivity
Run Code Online (Sandbox Code Playgroud)

项目级别的build.gradle

buildscript {
    ext.kotlin_version = "1.5.0"
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.2.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.8'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.0'
    }
}

allprojects {
    repositories {
        google()
        mavenCentral() 
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

模块级build.gradle

import org.gradle.internal.os.OperatingSystem

apply plugin: 'com.android.application'
apply …
Run Code Online (Sandbox Code Playgroud)

java android cocos2d-x kotlin

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

我可以使用cocos2d-x调度程序来延迟一行代码吗?

我基本上试图将对象的修改延迟10秒.

这是我认为可行的方法:

this->scheduleOnce(schedule_selector(customer->setBusy(false)), 10000);
Run Code Online (Sandbox Code Playgroud)

但是我收到编译错误:

Lvalue required as unary '&' operand
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法来延迟一行代码?也许只使用c ++命令会更有效率,但sleep命令也给了我一些问题.

c++ sleep schedule timer cocos2d-x

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

此代码中do-while的含义

Nextpeer教程中,您可以看到这样的代码:

CCScene* GameLayer::scene() {
    CCScene * scene = NULL;
    do {
        // 'scene' is an autorelease object
        scene = CCScene::create();
        CC_BREAK_IF(! scene);

        // 'layer' is an autorelease object
        GameLayer *layer = GameLayer::create();
        CC_BREAK_IF(! layer);

        // add layer as a child to scene
        scene->addChild(layer);
    } while (0);

    // return the scene
    return scene;
}
Run Code Online (Sandbox Code Playgroud)

do-while这段代码中block 的含义是什么?

c++ cocos2d-x nextpeer

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

对已删除的构造函数的C ++调用。了解指针向量和for循环

我在理解C ++方面有些挣扎。我正在使用cocos2dx并尝试制作一个用于突破游戏的精灵(砖)矢量。我能够在向量中添加一堆精灵(至少我想将它们加载到向量中),但是当我尝试遍历向量并读取它们时,我得到了一个错误:“调用已删除的' cocos2d :: Sprite'“。我以为我能理解指针,但是谁能向我解释我做错了什么以及此代码片段发生了什么?

std::vector<Sprite> sprites;
brick = Sprite::create("brick.png");
for ( int i = 0; i < 20; i++ ){
    Sprite *sprite = Sprite::create("brick.png");
    sprites.push_back(*sprite);
    this->addChild(sprite);
}
for (int i = 0; i < sprites.size(); i++){
    Sprite sprite = sprites[i]; //Call to deleted constructor of 'cocos2d::Sprite'
}
Run Code Online (Sandbox Code Playgroud)

c++ vector cocos2d-x

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