进入cocos2d-x的目录
在 .\template\multi-platform-cpp\Classes\ 下面有4个文件
AppDelegate.h/cpp HelloWorldScene.h/cpp
我们在里面增加一个 Delphi.h 内容如下
#pragma once
#pragma execution_character_set("utf-8") //默认使用UTF8
#include "cocos2d.h"
#include "cocostudio/CocoStudio.h"
#include "ui/CocosGUI.h"
#define IN_IOS (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#define IN_WIN (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
#define IN_AND (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#define IN_TV
#if IN_IOS
#define nullptr NULL
#endif
#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif
#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
//===================================================
// MARCO 常用宏
//===================================================
// 调试
#if IN_AND
#define wwAssert(x) assert(x)
#else
#define wwAssert(x) if (!(x)) return
#endif
// 遍历
#define LIST_FOREACH(__array__) for(auto it = (__array__)->begin(); it != (__array__)->end(); ++it)
//===================================================
// 坐标, 位置, 常用
//===================================================
// 坐标
#define TPoint cocos2d::Point
#define TScreen(x,y) TPoint((x) * g_ClientWidth, (y) * g_ClientHeight)
// 大小
#define TSize cocos2d::Size
// 矩形
#define TRect cocos2d::Rect
//===================================================
// COCOS 自带对象
//===================================================
#define TObject cocos2d::Ref
// 节点
#define TNode cocos2d::Node
#define TClippingNode cocos2d::ClippingNode
// 导演
#define TDirector cocos2d::Director
// 应用
#define TApplication cocos2d::Application
// 存档
#define TUserDefault cocos2d::UserDefault
// 文件
#define TFileUtils cocos2d::FileUtils
// 声音
#define TSimpleAudioEngine CocosDenshion::SimpleAudioEngine
// 场景
#define TScene cocos2d::Scene
// 图层
#define TLayer cocos2d::Layer
#define TLayerColor cocos2d::LayerColor
// 精灵
#define TSprite cocos2d::Sprite
#define TScale9Sprite cocos2d::ui::Scale9Sprite
// 队列
#define TArray cocos2d::Array
// 纹理
#define TTexture2D cocos2d::Texture2D
#define TTextureCache cocos2d::TextureCache
// 精灵帧
#define TSpriteFrame cocos2d::SpriteFrame
#define TSpriteFrameCache cocos2d::SpriteFrameCache
#define TRenderTexture cocos2d::RenderTexture
// 批处理节点
#define TSpriteBatchNode cocos2d::SpriteBatchNode
// 文本框
#define TLabel cocos2d::Label
#define TLabelTTF cocos2d::LabelTTF
#define TLabelAtlas cocos2d::LabelAtlas
#define TLabelBMFont cocos2d::LabelBMFont
// 菜单
#define TMenu cocos2d::Menu
// 菜单按钮
#define TMenuItemImage cocos2d::MenuItemImage
#define TMenuItemFont cocos2d::MenuItemFont
#define TMenuItemAtlasFont cocos2d::MenuItemAtlasFont
// 字符串
#define TString cocos2d::String
//===================================================
// cocos studio
//===================================================
#define TCSLoader cocos2d::CSLoader
//===================================================
// 颜色
//===================================================
#define clWhite cocos2d::Color3B::WHITE // 白色
#define clYellow cocos2d::Color3B::YELLOW // 黄色
#define clBlue cocos2d::Color3B::BLUE // 蓝色
#define clRed cocos2d::Color3B::RED // 红色
#define clBlack cocos2d::Color3B::BLACK // 黑色
#define clGreen cocos2d::Color3B::GREEN // 绿色
#define clOrange cocos2d::Color3B::ORANGE // 橘黄
#define clGray cocos2d::Color3B::GRAY // 灰色
#define clDarkGray cocos2d::Color3B(50, 50, 50) // 深灰
#define clCyan cocos2d::Color3B(0, 255, 255) // 青色
#define clPurple cocos2d::Color3B(128, 0, 255) // 紫色
#define aclWhite cocos2d::Color4B::WHITE
#define aclYellow cocos2d::Color4B::YELLOW
#define aclBlue cocos2d::Color4B::BLUE
#define aclRed cocos2d::Color4B::RED
#define aclMagenta cocos2d::Color4B::MAGENTA
#define aclBlack cocos2d::Color4B::BLACK
#define aclGreen cocos2d::Color4B::GREEN
#define aclOrange cocos2d::Color4B::ORANGE
#define aclGray cocos2d::Color4B::GRAY
//===================================================
// 触摸相关
//===================================================
#define TTouch cocos2d::Touch
// 单点触控
#define dmOneByOne TTouch::DispatchMode::ONE_BY_ONE
// 多点触控
#define dmAllAtOnce TTouch::DispatchMode::ALL_AT_ONCE
// 事件相关
#define TEvent cocos2d::Event
#define TEventListenerTouch cocos2d::EventListenerTouch
#define TEventListenerTouchOneByOne cocos2d::EventListenerTouchOneByOne
#define TEventListenerTouchAllAtOnce cocos2d::EventListenerTouchAllAtOnce
#define TEventListenerKeyboard cocos2d::EventListenerKeyboard
// 事件派发器
#define TEventDispatcher cocos2d::EventDispatcher
#define TSet cocos2d::Set
#define TEventKeyboard cocos2d::EventKeyboard
#define TKeyCode TEventKeyboard::KeyCode
//===================================================
// 动作相关
//===================================================
#define TAction cocos2d::Action
// 水平翻转
#define TFlipX cocos2d::FlipX
// 垂直翻转
#define TFlipY cocos2d::FlipY
// 放置
#define TPlace cocos2d::Place
// 显示与隐藏
#define THide cocos2d::Hide
#define TShow cocos2d::Show
#define TToggleVisibility cocos2d::ToggleVisibility
// 使用停止网格
#define TReuseGrid cocos2d::ReuseGrid
#define TStopGrid cocos2d::StopGrid
// 移动到
#define TMoveTo cocos2d::MoveTo
// 移动了
#define TMoveBy cocos2d::MoveBy
// 跳到
#define TJumpTo cocos2d::JumpTo
// 跳了
#define TJumpBy cocos2d::JumpBy
// 贝塞尔移动到
#define TBezierTo cocos2d::BezierTo
// 贝塞尔移动了
#define TBezierBy cocos2d::BezierBy
// 贝塞尔曲线设置
#define TBezierConfig cocos2d::ccBezierConfig
// 缩放到
#define TScaleTo cocos2d::ScaleTo
// 缩放了
#define TScaleBy cocos2d::ScaleBy
// 旋转到
#define TRotateTo cocos2d::RotateTo
// 旋转了
#define TRotateBy cocos2d::RotateBy
//
#define TTintTo cocos2d::TintTo
// 渐变
#define TFadeIn cocos2d::FadeIn
#define TFadeOut cocos2d::FadeOut
#define TFadeTo cocos2d::FadeTo
// 延迟
#define TDelayTime cocos2d::DelayTime
// 序列动作 (异步)
#define TSequence cocos2d::Sequence
// 同步动作
#define TSpawn cocos2d::Spawn
// 重复动作
#define TRepeat cocos2d::Repeat
#define TRepeatForever cocos2d::RepeatForever
#define TRepeatSeq(...) TRepeatForever::create(TSequence::create(##__VA_ARGS__))
// 动作回调
#define TCallFuncN cocos2d::CallFuncN
// 进度条任务
#define TProgressTo cocos2d::ProgressTo
#define TProgressFromTo cocos2d::ProgressFromTo
#define TProgressTimer cocos2d::ProgressTimer
#define PTT_Radial cocos2d::ProgressTimerType::kCCProgressTimerTypeRadial
#define PTT_Bar cocos2d::ProgressTimerType::kCCProgressTimerTypeBar//条形
//可变速度
#define TEaseIn cocos2d::EaseIn
#define TEaseOut cocos2d::EaseOut
#define TEaseInOut cocos2d::EaseInOut
#define TEaseSineIn cocos2d::EaseSineIn
#define TEaseSineOut cocos2d::EaseSineOut
#define TEaseSineInOut cocos2d::EaseSineInOut
#define TEaseBackIn cocos2d::EaseBackIn
#define TEaseBackOut cocos2d::EaseBackOut
#define TEaseBackInOut cocos2d::EaseBackInOut
#define TEaseExponentialIn cocos2d::EaseExponentialIn
#define TEaseExponentialOut cocos2d::EaseExponentialOut
#define TEaseExponentialInOut cocos2d::EaseExponentialInOut
#define TEaseBounceIn cocos2d::EaseBounceIn
#define TEaseBounceOut cocos2d::EaseBounceOut
#define TEaseBounceInOut cocos2d::EaseBounceInOut
#define TEaseElasticIn cocos2d::EaseElasticIn
#define TEaseElasticOut cocos2d::EaseElasticOut
#define TEaseElasticInOut cocos2d::EaseElasticInOut
//==================================================
// 动画相关
//==================================================
// 动画,属于动画相关
#define TAnimation cocos2d::Animation
// 动作,可以放到动作里
#define TAnimate cocos2d::Animate
// 动画缓存
#define TAnimationCache cocos2d::AnimationCache
// 动画帧
#define TAnimationFrame cocos2d::AnimationFrame
//==================================================
// 网络
//==================================================
#define THttpRequest cocos2d::network::HttpRequest
#define THttpRT_Get THttpRequest::Type::GET
#define THttpRT_Post THttpRequest::Type::POST
#define THttpClient cocos2d::network::HttpClient
#define g_HttpClient THttpClient::getInstance()
#define THttpResponse cocos2d::network::HttpResponse
#define TSEL_HttpResponse cocos2d::network::SEL_HttpResponse
//==================================================
// 粒子效果
//==================================================
#define TParticleFire cocos2d::ParticleFire
#define TParticleFireworks cocos2d::ParticleFireworks
#define TParticleSun cocos2d::ParticleSun
#define TParticleGalaxy cocos2d::ParticleGalaxy
#define TParticleFlower cocos2d::ParticleFlower
#define TParticleMeteor cocos2d::ParticleMeteor
#define TParticleSpiral cocos2d::ParticleSpiral
#define TParticleExplosion cocos2d::ParticleExplosion
#define TParticleSmoke cocos2d::ParticleSmoke
#define TParticleSnow cocos2d::ParticleSnow
#define TParticleRain cocos2d::ParticleRain
#define TParticleBatchNode cocos2d::ParticleBatchNode
//==================================================
//切换特效
//==================================================
#define TTransitionPageTurn cocos2d::TransitionPageTurn //翻页切换,bool为true是向前翻。 TransitionPageTurn::create(时间,目标场景,bool);
#define TTransitionProgressInOut cocos2d::TransitionProgressInOut //本场景从中间到四周消失同时另一场景出现 TransitionProgressInOut::create(时间,目标场景);
#define TTransitionProgressOutIn cocos2d::TransitionProgressOutIn //本场景从四周到中间消失同时另一场景出现 TransitionProgressOutIn::create(时间,目标场景);
#define TTransitionProgressRadialCCW cocos2d::TransitionProgressRadialCCW //本场景逆时针消失到另一场景 TransitionProgressRadialCCW::create(时间,目标场景);
#define TTransitionProgressRadialCW cocos2d::TransitionProgressRadialCW //本场景顺时针消失到另一场景 TransitionProgressRadialCW::create(时间,目标场景);
#define TTransitionProgressVertical cocos2d::TransitionProgressVertical //本场景从上到下消失同时另一场景出现 TransitionProgressVertical::create(时间,目标场景);
#define TTransitionSceneOriented cocos2d::TransitionSceneOriented
#define TTransitionRotoZoom cocos2d::TransitionRotoZoom //本场景旋转消失后另一场景旋转出现TransitionRotoZoom::create(时间,目标场景);
#define TTransitionJumpZoom cocos2d::TransitionJumpZoom //本场景跳动消失后另一场景跳动出现TransitionJumpZoom::create(时间,目标场景);
#define TTransitionMoveInL cocos2d::TransitionMoveInL //另一场景由整体从左面出现TransitionMoveInL::create(时间,目标场景);
#define TTransitionMoveInR cocos2d::TransitionMoveInR //另一场景由整体从右面出现TransitionMoveInR::create(时间,目标场景);
#define TTransitionMoveInT cocos2d::TransitionMoveInT //另一场景由整体从上面出现TransitionMoveInT::create(时间,目标场景);
#define TTransitionMoveInB cocos2d::TransitionMoveInB //另一场景由整体从下面出现TransitionMoveInB::create(时间,目标场景);
#define TTransitionSlideInL cocos2d::TransitionSlideInL //本场景向右滑动到另一场景TransitionSlideInL::create(时间,目标场景);
#define TTransitionSlideInR cocos2d::TransitionSlideInR //本场景向左滑动到另一场景TransitionSlideInR::create(时间,目标场景);
#define TTransitionSlideInB cocos2d::TransitionSlideInB //本场景向上滑动到另一场景TransitionSlideInB::create(时间,目标场景);
#define TTransitionSlideInT cocos2d::TransitionSlideInT //本场景向下滑动到另一场景TransitionSlideInT::create(时间,目标场景);
#define TTransitionShrinkGrow cocos2d::TransitionShrinkGrow //本场景缩小切换到另一场景放大TransitionShrinkGrow::create(时间,目标场景);
#define TTransitionFlipX cocos2d::TransitionFlipX //本场景翻转消失到另一场景(X轴)TransitionFlipX::create(时间,目标场景,样式);
#define TTransitionFlipY cocos2d::TransitionFlipY //本场景翻转消失到另一场景(Y轴)TransitionFlipY::create(时间,目标场景);
#define TTransitionFlipAngular cocos2d::TransitionFlipAngular //本场景翻转消失到另一场景(斜上方)TransitionZoomFlipAngular::create(时间,目标场景,样式);
#define TTransitionZoomFlipX cocos2d::TransitionZoomFlipX //本场景翻转消失到另一场景(X轴)TransitionZoomFlipX::create(时间,目标场景,样式);
#define TTransitionZoomFlipY cocos2d::TransitionZoomFlipY //本场景翻转消失到另一场景(Y轴)TransitionZoomFlipY::create(时间,目标场景,样式);
#define TTransitionZoomFlipAngular cocos2d::TransitionZoomFlipAngular
#define TTransitionCrossFade cocos2d::TransitionCrossFade
#define TTransitionTurnOffTiles cocos2d::TransitionTurnOffTiles //本场景小方块消失到另一场景TransitionTurnOffTiles::create(时间,目标场景);
#define TTransitionSplitCols cocos2d::TransitionSplitCols //本场景三矩形上下消失后另一场景三矩形上下出现TransitionSplitCols::create(时间,目标场景);
#define TTransitionSplitRows cocos2d::TransitionSplitRows //本场景三矩形左右消失后另一场景三矩形左右出现TransitionSplitRows::create(时间,目标场景);
#define TTransitionFade cocos2d::TransitionFade
#define TTransitionFadeTR cocos2d::TransitionFadeTR //本场景左下角到右上角方块消失到另一场景
#define TTransitionFadeBL cocos2d::TransitionFadeBL //本场景右上角到左下角方块消失到另一场景
#define TTransitionFadeUp cocos2d::TransitionFadeUp //本场景从上到下横条消失到另一场景
#define TTransitionFadeDown cocos2d::TransitionFadeDown //本场景从下到上横条消失到另一场景
//==================================================
// 全局单例
//==================================================
// 导演
#define g_pDirector TDirector::getInstance()
//
#define g_pUserDefault TUserDefault::getInstance()
// 纹理缓存
#define g_pTextureCache TTextureCache::getInstance()
// 精灵帧缓存
#define g_pSpriteFrameCache TSpriteFrameCache::getInstance()
// 动画缓存
#define g_pAnimationCache TAnimationCache::getInstance()
// 文件系统
#define g_pFileUtils TFileUtils::getInstance()
// 声音引擎
#define g_SimpleAudioEngine TSimpleAudioEngine::getInstance()
//------------- 适配用 -------------
// 窗口宽
extern int g_ClientWidth;
// 窗口高
extern int g_ClientHeight;
// 窗口半宽
extern float g_ClientMidWidth;
extern float g_ClientMidX;
// 窗口半高
extern float g_ClientMidHeight;
extern float g_ClientMidY;
// 中间点
extern TPoint g_ClientMidPoint;
//==================================================
// 简易字符串处理
#define IntToStr(x) TString::createWithFormat("%d", x)->getCString()
//
#define Format(fm, ...) TString::createWithFormat(fm, ##__VA_ARGS__)->getCString()
//==================================================
//触摸事件声明
// 新建一个监听器 是否继续向下传递 绑定
#define BIND_TOUCH_ONE(x) do{\
auto listener = TEventListenerTouchOneByOne::create(); \
listener->setSwallowTouches(true); \
listener->onTouchBegan = CC_CALLBACK_2(x::onTouchBegan, this); \
listener->onTouchMoved = CC_CALLBACK_2(x::onTouchMoved, this); \
listener->onTouchEnded = CC_CALLBACK_2(x::onTouchEnded, this); \
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); \
} while (false)
// 关闭按键
#define REMOVE_TOUCH_ONE _eventDispatcher->removeAllEventListeners();
#define GETTICKTIME (int)time(nullptr)
/* 复制代码
virtual bool onTouchBegan(TTouch* pTouch, TEvent* pEvent);
virtual void onTouchMoved(TTouch* pTouch, TEvent* pEvent);
virtual void onTouchEnded(TTouch* pTouch, TEvent* pEvent);
// 按下
bool TLayerGameUI::onTouchBegan(TTouch *pTouch, TEvent *pEvent)
// 移动
void TLayerGameUI::onTouchMoved(TTouch *pTouch, TEvent *pEvent)
// 弹起
void TLayerGameUI::onTouchEnded(TTouch *pTouch, TEvent *pEvent)
//关于回调
item->setCallback(CC_CALLBACK_1(TSceneMainMenu::menuStartGameCallback, this));
*/
#include "HelloWorldScene.h"
USING_NS_CC;
AppDelegate::AppDelegate() {
}
AppDelegate::~AppDelegate()
{
}
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = g_pDirector;
auto eglView = EGLView::getInstance();
director->setOpenGLView(eglView);
// 是否显示FPS
director->setDisplayStats(true);
// 设置 FPS. 不设置就是 60分之一秒 最好别改
director->setAnimationInterval(1.0 / 60);
// 创建一个场景,并且把 Helloworld层也丢进去
auto scene = THelloWorld::createScene();
// 运行主循环
director->runWithScene(scene);
return true;
}
// APP进入后台以后
void AppDelegate::applicationDidEnterBackground() {
g_pDirector->stopAnimation();
// if you use SimpleAudioEngine, it must be pause
// SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}
// APP从后台回归以后
void AppDelegate::applicationWillEnterForeground() {
g_pDirector->startAnimation();
// if you use SimpleAudioEngine, it must resume here
// SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}
#pragma once
#include "cocos2d.h"
#include "DelphiHead.h"
class THelloWorld : public TLayer
{
public:
// there's no 'id' in cpp, so we recommend returning the class instance pointer
static TScene* createScene();
// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init();
// 按钮单击事件
void menuCloseCallback(TObject* pSender);
// implement the "static create()" method manually
CREATE_FUNC(THelloWorld);
// 定时器
void myOnTimer(float fInterval);
};
修改 HelloWorldScene.cpp
#include "HelloWorldScene.h"
#include "DelphiHead.h"
USING_NS_CC;
Scene* THelloWorld::createScene()
{
// 'scene' is an autorelease object
auto scene = TScene::create();
// 'layer' is an autorelease object
auto layer = THelloWorld::create();
// add layer as a child to scene
scene->addChild(layer);
// return the scene
return scene;
}
// on "init" you need to initialize your instance
bool THelloWorld::init()
{
//////////////////////////////
// 1. 初始化, 因为 Hello 本身就是从 Layer 下面继承下来的, 所以必须把他爸爸的Init也执行一次
if ( !TLayer::init() )
{
return false;
}
/////////////////////////////
// 2. 添加一个关闭的菜单, 这是一个自动释放的对象
auto closeItem = TMenuItemImage::create(
"CloseNormal.png", // 选中图片
"CloseSelected.png",
CC_CALLBACK_1(THelloWorld::menuCloseCallback, this));
closeItem->setPosition(TPoint(g_ClientWidth - closeItem->getContentSize().width/2 ,
g_origin.y + closeItem->getContentSize().height/2));
// create menu, it's an autorelease object
auto menu = TMenu::create(closeItem, NULL);
menu->setPosition(TPointZero);
this->addChild(menu, 1);
/////////////////////////////
// 3. 添加一个定时器
this->schedule(
schedule_selector(THelloWorld::myOnTimer), // 定时器函数回调指针
1.0f, // 定时器间隔(单位秒)
0xFFFFFFFF, // 执行次数
0); // 延迟(秒)以后开始启动
/////////////////////////////
// 4. add your codes below...
// 添加一个文本框
// 创建并初始化一个文本框
auto label = TLabelTTF::create("Hello World", "Arial", 24);
// 设置位置
label->setPosition(TPoint(g_ClientMidX, // X在中间, Y在上面
g_ClientHeight - label->getContentSize().height));
// 添加到Helloworld图层
this->addChild(label, 1);
// 添加一张精灵图片
auto sprite = TSprite::create("HelloWorld.png");
// 设置位置到正中间
sprite->setPosition(g_ClientMidPoint);
// 添加到Helloworld图层
this->addChild(sprite, 0);
return true;
}
void THelloWorld::menuCloseCallback(TObject* pSender)
{
g_pDirector->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
#endif
}
void THelloWorld::myOnTimer(float fInterval)
{
CCLOG("myOnTimer %.2f",fInterval); // 时间间隔
}

这篇博客介绍了如何在Cocos2d-x 3.0的项目中创建一个Delphi头文件,旨在简化后续的Delphi编程工作。作者进入项目的Classes目录,并在已有文件基础上新增了Delphi.h文件。

2340

被折叠的 条评论
为什么被折叠?



