新建一个工程
cocos new MyGame -p com.MyCompany.MyGame -l cpp -d ./MyCompany
编译生成Linux程序
cocos compile -s ./MyCompany/MyGame -p linux -m debug -o ./MyCompany/MyGame/bin
编译生成Android程序
cocos compile -s ./MyCompany/MyGame -p android -m debug -o ./MyCompany/MyGame/bin
可以看到生成的Classes文件夹中有四个文件
AppDelegate.h
AppDelegate.cpp
HelloWorldScene.h
HelloWorldScene.cpp
这篇文章的目的是增加两个新文件
MyClass.h
#ifndef MYCLASS_H
#define MYCLASS_H
#include "cocos2d.h"
class MyClass : public cocos2d::Sprite {
public:
MyClass();
~MyClass();
void print();
int getNumber();
};
#endif
MyClass.cpp
#include <iostream>
#include "MyClass.h"
using namespace std;
MyClass::MyClass() {}
MyClass::~MyClass() {}
void MyClass::print() {
cout << "MyClass";
}
int MyClass::getNumber() {
return 100;
}
在HelloWorldScene.cpp中用到MyClass对象,HelloWorldSence::init()函数中添加:
MyClass m;
auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", m.getNumber());
可以看到定义了一个对象m,在createWithTTF函数中调用m.getNumber()函数。
如果直接编译会出错,
在编译Linux程序时需要在CMakeLists.txt文件中增加
set(GAME_SRC
Classes/AppDelegate.cpp
Classes/HelloWorldScene.cpp
Classes/MyClass.cpp
${PLATFORM_SPECIFIC_SRC}
)
set(GAME_HEADERS
Classes/AppDelegate.h
Classes/HelloWorldScene.h
Classes/MyClass.h
${PLATFORM_SPECIFIC_HEADERS}
)
表示已经包涵这两个文件。
编译成功
Scanning dependencies of target MyGame
[100%] Building CXX object CMakeFiles/MyGame.dir/Classes/HelloWorldScene.cpp.o
[100%] Building CXX object CMakeFiles/MyGame.dir/Classes/MyClass.cpp.o
[100%] Linking CXX executable bin/MyGame
[100%] Built target MyGame
Build succeed.
在编译Android程序时需要在
/home/wang/workspace/cocos2dx/MyCompany/SixFiles/proj.android/jni/目录下增加
Android.mk
14 LOCAL_SRC_FILES := hellocpp/main.cpp \
15 ../../Classes/AppDelegate.cpp \
16 ../../Classes/HelloWorldScene.cpp \
17 ../../Classes/MyClass.cpp
18
19 LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
编译成功
BUILD SUCCESSFUL
Total time: 15 seconds
Move apk to /home/wang/workspace/cocos2dx/MyCompany/SixFiles/bin
Build succeed.