我是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.对不起,我的英语不好,谢谢你!
我正在使用 CCAnimation 类来使用具有多个 CCSprite 的动画。我想要的是:
“动画完成后移除精灵”
如果有人在这方面工作,请让我知道。我该怎么做。
我的计划的事实
task_scheduler在自己的线程中运行,您可以在其中提交轻量级任务.我们称之为task_scheduler-thread.task_scheduler线程发出一个回调.我们称之为task_scheduler-tick-callback.我想做的事
我想在发出task_scheduler-tick-callback时加载一个sprite ,但是我不能从那个线程中执行它,所以我必须提交一些由cocos2d-x线程执行的工作.
问题
任何模式?
编辑:想法 - >在cocos2d-x中为每个循环迭代调用的任何回调函数?那存在吗?我可以集成在调用我的工作片那样.
假设我需要在延迟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中为代码执行添加延迟的跨平台方式是什么?

我想解析这个plist结构......请帮助
我现在使用的是
mainDictionary = __Dictionary::createWithContentsOfFile(plistPath.c_str());
__Dictionary *exit = (__Dictionary*)__Dictionary::createWithDictionary(
(__Dictionary*)mainDictionary->objectForKey(std::string("otherButton")));
Run Code Online (Sandbox Code Playgroud)
但是有些钥匙缺少退出的决定权......
在cocos2dx项目中,在iOS 10设备上,当向下扫描通知中心时,会发生巨大的帧速率下降.结果,当动画恢复ui时,其运动取决于Δt的元素被移动到无效位置.在我看来,操作系统正在将应用程序置于某种后台模式,但applicationDidEnterBackground不会被调用.当通知中心被向下/向上滑动时,有没有办法接收事件?
我正在尝试从 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) 我基本上试图将对象的修改延迟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命令也给了我一些问题.
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 ++方面有些挣扎。我正在使用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)