从Delphi开始学Cocos2dx-3.0[4]:定义一个Delphi头,方便今后编程

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

进入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();
}



修改 HelloWorldScene.h

#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); // 时间间隔  
}  





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值