Cocos2dx游戏教程(七):“见缝插针”,Label标签的使用

Cocos2dx 小技巧(三)Label的换行 有些技巧你不知道不要紧,但知道后会很牛逼。 近来玩上了刀塔传奇,这游戏做的真心不错。为什么会有这种评价呢?本人虽然是开发游戏的,但能让我玩超过一小时的游戏真心不多(不包括自己参与开发的游戏,嘿)。我虽然没玩过dota,但却是英雄联盟的狂热爱好者!排位白银分段啊有木有!求超越! ---------------- 好了,这次又把Label这货拉出来鞭一鞭。 我先创建一个label 阅读详情

在创建第二场景中我们不仅看到了Menu的创建,其中是不是还有如下的创建方式啊?

//关卡数字
 auto levelTTF = Label::createWithCharMap("fonts/label/label_ball.png", 14, 20, '0');
 levelTTF->setString(StringUtils::format("%d", 1));
 levelTTF->setPosition(level->getContentSize() / 2);
 level->addChild(levelTTF);

是不是显示如下图里面的数字呢?
在这里插入图片描述
那么在这一节中将会主要介绍cocos2dx Label的创建方式。

一、Label介绍

cocos2dx 在3.x中,Label支持四种方式的标签创建。并新增了阴影Shadow、轮廓Outline、发光Glow效果的支持。还支持文字内容的行间距、文字间距、自动换行的设置。

在3.x中,废弃了2.x里的CCLabelTTF、CCLabelAtlas、CCLabelBMFont三个字体类,取而代之的是全新的字体标签Label。
实际上Label是将三个字体类进行了融合,进行统一的管理与渲染,这使得创建字体标签Label的方式更加统一,更加方便。

如下图所示,在3.x中支持如下四种创建方式,下面详细的介绍下创建的方法。
在这里插入图片描述

二、Label的创建方式

1、createWithSystemFont
顾名思义,该字体的创建方式是通过系统字体创建
我们看一下函数原型

static Label* createWithSystemFont(const std::string& text, const std::string& font, float fontSize,
    	const Size& dimensions = Size::ZERO, TextHAlignment hAlignment = TextHAlignment::LEFT,
        TextVAlignment vAlignment = TextVAlignment::TOP);

使用方式

auto label = Label::createWithSystemFont("hello", "Arial", 24);
label ->setPosition(100, 100);
this->addChild(label );

创建一个“hello”文本,使用“Arial”系统字体,字体大小是24
将label标签设置在屏幕中(100,100)的位置
将label加入到this指代的对象上

2、createWithTTF
函数原型,有两种方式哦

static Label * createWithTTF(const std::string& text, const std::string& fontFilePath, float fontSize,
        const Size& dimensions = Size::ZERO, TextHAlignment hAlignment = TextHAlignment::LEFT,
        TextVAlignment vAlignment = TextVAlignment::TOP);
        
static Label* createWithTTF(const TTFConfig& ttfConfig, const std::string& text, 
        TextHAlignment hAlignment = TextHAlignment::LEFT, int maxLineWidth = 0);

使用方法,以第一个为例,第二个构造下ttfConfig,和第一种是类似的

auto label = Label::createWithTTF("hello", "fonts/arial.ttf", 24);
label ->setPosition(100, 100);
this->addChild(label );

3、createWithBMFont
函数原型

static Label* createWithBMFont(const std::string& bmfontPath, const std::string& text,
        const TextHAlignment& hAlignment = TextHAlignment::LEFT, int maxLineWidth = 0,
        const Vec2& imageOffset = Vec2::ZERO);

使用方法,

auto label = Label::createWithBMFont("font.fnt","hello");
label ->setPosition(100, 100);
this->addChild(label )

4、createWithCharMap
函数原型,有三种种方式哦

static Label * createWithCharMap(const std::string& charMapFile, int itemWidth, int itemHeight, int startCharMap);
static Label * createWithCharMap(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap);
static Label * createWithCharMap(const std::string& plistFile);

(1)使用png创建,这个大家很熟悉吧,就是我们上面使用的创建方式
在这里插入图片描述

//关卡数字
 auto levelTTF = Label::createWithCharMap("fonts/label/label_ball.png", 14, 20, '0');
 levelTTF->setString(StringUtils::format("%d", 1));
 levelTTF->setPosition(level->getContentSize() / 2);
 level->addChild(levelTTF);

(2)使用纹理创建

Texture2D* texture = TextureCache::getInstance()->addImage("fonts/label/label_ball.png");
auto lable = Label::createWithCharMap(texture, 14, 20, '0');
lable->setString("1"); 
label ->setPosition(100, 100);
this->addChild(label )

(3)使用plist创建

auto lable = Label::createWithCharMap("fonts/label_ball.plist");
lable->setString("1");
label ->setPosition(100, 100);
this->addChild(label )

这里的plist是一种文件格式,里面记录了用到字符的图片名称,每个字符的宽,高,起始位置,最常见的是第一种和第二种方式,大家可以尝试用不同的方式使用哦。

通过本节的学习,是不是对Label有所了解了呢,下一节让我们加载下游戏数据,关卡将会从文件中读取显示哦

cocos2dx高级开发教程pdf,非常适合一点也不会的童鞋使用 本人也是从零开始学习利用cocos2dx游戏引擎来开发游戏,所以,看了这本书,感觉挺适合初学者来看! 立即下载

相关推荐

FinRL实战:5步搞定股票量化交易策略(附Python代码)

本文详细介绍了如何使用FinRL框架,通过5个步骤构建基于深度强化学习的股票量化交易策略。内容涵盖从环境搭建、数据获取与预处理,到交易环境构建、模型训练(如PPO算法),以及策略回测评估与优化的完整流程,并提供了可运行的Python代码示例,帮助读者快速入门AI驱动的量化交易。

weixin_29062865的博客 625

cocos2dx Label系统字体怎么设置行高?

Label系统字体怎么设置行高? 研究了一天也没有解决 暂时的想法是自己分行,每行使用一个Label 平台: win32 记录一下 1. Label::createWithSystemFont 2. Label::createSpriteForSystemFont void Label::createSpriteForSystemFont(const FontDefinition& fontDef) { _currentLabelType = LabelType::STRING_T

433

Simulink+Simscape多体仿真:六自由度Stewart平台动力学建模全流程

本文详细介绍了使用Simulink和Simscape Multibody进行六自由度Stewart平台动力学建模的全流程,涵盖从CAD模型导入、运动学逆解计算到实时控制系统的设计。通过MATLAB/Simulink与Simscape的协同工作,实现高保真度的并联机器人仿真,适用于飞行模拟器、精密加工等高精度领域。

r2s3t4的博客 484

cocos2dx对于Label的样式设置

Label有三个样式设置:分别还是shadow(阴影),outline(外边),glow(发光)。 我的一点小建议是对于一些不需要点击的label可以单独设置shadow或glow,但是对于需要点击的label而言,将字设置为白色,然后使用outline样式作laebl的边框,效果很好,效果图如下: 需要点击的label: 不需要点击的label: ...

qq_41620823的博客 811

手把手教你用YOLOv5和OpenCV实现DNF全自动刷图(含自动拾取与Boss战逻辑)

本文详细介绍了如何使用YOLOv5和OpenCV构建DNF全自动刷图系统,包括环境配置、游戏画面采集、目标检测、场景导航及操作控制等核心模块。通过实战案例,帮助开发者掌握游戏自动化技术,实现自动拾取与Boss战逻辑,提升游戏效率。

weixin_42628941的博客 445

【ODX介绍】-4.2-UDS诊断$27服务在ODX-D诊断描述文件中如何描述

共25页精讲:附ODX-D XML:UDS $27 Security服务0x61和0x62 Sub-Function,其它Sub-Function可参照其格式。 目录 1 ODX-D描述一个UDS $27 Security服务Sub-Function的结构 2 标签DIAG-SERVICE描述的内容 2.1 举例:DIAG-SERVICE的XML描述 3 标签REQUEST描述的内容 3.1 举例:REQUEST的XML描述 4 标签POS-RESPONSE描述的内容 4.1 举例:PO..

「汽车电子助手」的博客 1120

大话cocos2d中的文字显示(CCLabelTTF、CCLabelBMFont和CCLabelAtlas)

cocos2d中的文字显示

Han的小站 2136

保姆级教程:一步步创建 ABAP Text Table

有朋友反馈,问有没有一个自己动手创建 Text Table 的例子,因为自己没有动手实践过,总觉得心里不踏实。这个行为的语义是,ZAI_TYPE_T 这张表的 AI_TYPE 字段值,不能随便维护,必须是表。然后另一个需要添加的字段是 AI_TYPE 这个字段值对应的文本值,本例笔者采用 SAP 标准的。也是自己创建的,很简单的一个 Data Element,类型为 CHAR,长度为 2.依次给主表的 01,02,03 三个字段值维护对应的描述信息,最后效果如下。按照下面的字段结构,创建另一。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4273

Cocos2d-x游戏开发之CCLabelTTF标签详解之Create方法(设置自动换行的标签)和换行符的巧妙使用(十六)(高级篇) (转)

转自:http://blog.youkuaiyun.com/wisdom605768292/article/details/12929741 在上面的一篇文章之中,我们讲解了标签的对齐方式,设置后,可以固定标签的位置,向固定的方向增加内容,就像是写字一样的。 好的,问题来了,写字的时候,当一行足够填写内容的时候,上面的方法是OK的;当我们要显示一段文字的时候呢,这时候就需要自动换好多行来 适

hhy018的专栏 1129

【云原生】Docker可视化工具Portainer使用详解

Docker可视化工具Portainer使用详解

congge 1万+

32位快速加法器设计

32位快速加法器设计

好好学习,天天向上 3289

Cocos2dx游戏教程(五):“见缝插针”,第二个场景的建立

上一篇中我们建立了第一个场景,下面我们着手建立第二个场景哦,第二个场景比较复杂了,我们先看一下实现的效果吧,在本节中将会带大家一起实现第二场景。 场景的将会涉及到文件标签,菜单按钮等操作,下两节将会分别介绍文字标签和菜单的实现,现在可以先带着问题做下去哦。 看下对比图,是不是很有感觉了, 好像当时上数学课的样子~~ 开始准备今天的场景吧。 一、准备场景素材 场景中存在的元素有哪些呢? 对,有背...

小白的专栏 528

OPTEE常见13类问题与解答

OPTEE常见13类问题并解答

AI-安全-功耗 1202

Cocos2d-x 3.2 Lua示例 CaptureScreen(截屏)

https://blog.youkuaiyun.com/wwj_748/article/details/38373849Cocos2d-x截屏功能是从3.2开始提供的,本篇博客就是介绍Cocos2d-x 3.2中Lua示例中的截屏功能。效果如下所示: 例子代码如下:[javascript] view plain copy--[[  截屏测试  CaptureScreenTest  ]]--  -- 获取屏幕大...

北极洲的博客 1592

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

cocos 常用控件

  -----------------------华丽分割线---------------cc.Label-------------------------------        local Label = cc.Label:createWithTTF("难带努牍那您的","572.ttf",25)        --local ui = cc.Label:createWithBMFont("...

xuefujin的博客 1337

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

使用TTF字体

TTFConfig ttfConfig("fonts/liuwen.ttf", 15); auto label1 = Label::createWithTTF(ttfConfig, "Print Resources"); label1->setPosition(visibleSize.width/2.0,visibleSize.height/2.0); addChild(label1);*/coco

xiaowenliuwen的博客 923

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

cocos2dx的控件

http://blog.youkuaiyun.com/yongyu_it/article/details/44963371 cocos2dx提供了一套易于使用的控件库来满足开发者的GUI需求。cocos2dx控件大致可分为两种,第一种是非继承自Widget类的早期控件库;第二类是新的继承自Widget类的控件库。 先介绍早期的非继承自Widget的控件库 1、标签(Label)

hwh的博客 900

cocos2dx 3.x Label使用

cocos2dx cc.label字体颜色在3.x中,Label支持四种方式的标签创建。并新增了阴影Shadow、轮廓Outline、发光Glow效果的支持。还支持文字内容的行间距、文字间距、自动换行的设置。 > 创建系统原生字体API : createWithSystemFont > 创建TTF             : createWithTTF       (原LabelTTF

u012861978的专栏 1万+

cocos2dx3.4 Label

创建一个空的Label,具体属性以后再设置 static Label* create(); 使用系统API创建一个Label, 参数包括 一个初始字符串 ,字体(字体名称或字体文件),字体大小,在分维度,水平对齐和垂直对齐。 static Label* createWithSystemFont(const std::string& text, const std::string& font,

u014626120的专栏 896

cocos2d-x-lua:API-标签,菜单项和菜单和Scene,Layer

标签:cc.Label:createWithSystemFont,常用的方法 cc后面点表示一个目录,Label类的createWithSystemFont方法创建一个标签对象。 local label = cc.Label:createWithSystemFont("Hello World", "Arial", 26) label:setPosition(cc.p(size.width/2, size.height-32)) layer:addChild(label)

sylalak123的博客 707

游戏开发cocos2d-x实战(5) -- UI系统

Cocos2d-x提供了GUI元素,绘制丰富多彩的界面,其中包括:Label、Menu、MenuItems、Buttons和ScrollView、Slider、LoadBar、RadioButton、CheckBox、Layout、定时器等。 1、Label Label支持四种方式的标签创建。并新增了阴影Shadow、轮廓Outline、发光Glow效果的支持。还支持文字内容的行间距、文字间距、自...

x879014419的博客 634

Cocos2d-x 文字显示

Cocos2d-x 文字显示 声明:本文分析的是cocos2d-x-3.12的代码 cocos底层使用的是OpenGL进行页面渲染,但OpenGL并支持文字的处理,OpenGL主要是用于图像和3D模型的渲染。为了支持文字的渲染,cocos会将文字转换成要显示的图片,然后通过OpenGL把图片显示出来。 cocos2d-x 3.x中支持四种文字的处理,都实现在Lable类中,对应了Lab...

Wlk1229 3555

cocos2d-x 3.x label 功能详解,包括行列间距等细节问题

尊重知识版权,文章转载于:http://www.taikr.com/group/2/thread/1869 这次主要介绍一下关于cocos2d-x 3.x label自动换行的问题,详细的总结一下Cocos2d-x中新字体标签Label,总结如下: 在3.x中,Label支持四种方式的标签创建。并新增了阴影Shadow、轮廓Outline、发光Glow效果的支持。还支持文字内容的行间距

suntwei的专栏 1万+

cpp-tests Node::Label

~~~~我的生活,我的点点滴滴!!

破茧 1700

Label的使用

1、Label中的使用createWithCharMap(加入图片字符为0123456789x)     1、使用.png创建     //create 字符图片.png,每个字符宽,高,起始字符     Label* lb4 = Label::createWithCharMap(“fonts/digit.png”, 20, 20, ‘0’); lb4->setString(“12345

lianghui0811 305
上一篇: Cocos2dx游戏教程(六):“见缝插针”,菜单Menu与C++11新特性
下一篇: Cocos2dx游戏教程(八):“见缝插针”,UserDefault数据存储与读取
胖胖的战士
博客等级 码龄18年 104粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值