2018-02-12 11:00:17 wsr270591269 阅读数 644
  • Cocos2d-x 3.x 项目实战:仿微信飞机大战(射击类游戏)...

    课程目标: 本课程将帮助广大Cocos2d-x学员了解如何使用Cocos2d-x开发一款相对简单的射击类游戏。学员将会了解开发一款完整游戏的基本步骤,并学会如何将《从零开始掌握Cocos2d-x 3.x》中的知识转化为实际的游戏。学员将从这款游戏中学习到如何建立游戏的基本框架、如设置背景音乐、显示欢迎画面、移动飞机、发射子弹、碰撞检测等开发游戏的技术。

    13145 人正在学习 去看看 李宁

笔者在编写代码的时候想要修改Cocos Studio中text的内容,便上网去查找。但是网上一时没有找到直接讲解修改Cocos Studio中UI内容的文章。

于是笔者便参考了一下网上各个方面的讲解,自己摸索着编码调试,成功修改了Cocos Studio中text的内容。

笔者在下面举个简单的例子,用于参考。

Cocos Studio例子截图

笔者在Cocos Studio 创建了一个Layer 命名为 example
在这个Layer中 添加了一个图片(ImageView) 命名为 Image_ex
在这个图片(ImageView)中添加了一个文本(Text)命名为 Text_ex

下面给出代码:

首先须要包括几个头文件和命名空间

#include "cocostudio/CocoStudio.h"
#include "ui/CocosGUI.h"
using namespace cocos2d::ui;
//using namespace cocostudio;   
//网上有看到说包括这个命名空间,但是笔者没有使用这个命名空间

下面是修改Cocos Studio中text的内容的代码:

auto exampleLayer = CSLoader::createNode("example.csb");
auto imageView = static_cast<ImageView*>(exampleLayer->getChildByName("Image_ex"));
auto textView = static_cast<Text*>(imageView->getChildByName("Text_ex"));
textView->setText("revise the text");
2017-09-07 17:46:18 qq_21031727 阅读数 278
  • Cocos2d-x 3.x 项目实战:仿微信飞机大战(射击类游戏)...

    课程目标: 本课程将帮助广大Cocos2d-x学员了解如何使用Cocos2d-x开发一款相对简单的射击类游戏。学员将会了解开发一款完整游戏的基本步骤,并学会如何将《从零开始掌握Cocos2d-x 3.x》中的知识转化为实际的游戏。学员将从这款游戏中学习到如何建立游戏的基本框架、如设置背景音乐、显示欢迎画面、移动飞机、发射子弹、碰撞检测等开发游戏的技术。

    13145 人正在学习 去看看 李宁

1.cocos studio中textFiled输入文本框预设文字在studio里设置颜色不是预期颜色。

需要在代码里修改,以下2种方法均可:

:setPlaceHolderColor(cc.c4b(255,255,255,255))

:setPlaceHolderColor(cc.c3b(255,255,255))

官方示例居然藏在..\Cocos2d-x\cocos2d-x-3.10\tests\lua-tests\src\WebViewTest\webViewTest.lua里面!!!太坑了。

2.3B和4B、4F的区别:

ccColor3B 用三个 0-255 的整数描述颜色,不带透明度
ccColor4B 用四个 0-255 的整数描述颜色,带透明度
ccColor4F 用四个 0.0 - 1.0 的浮点数描述颜色,带透明度

3.查看Lua和C++方法绑定的文件夹:

..\Cocos2d-x\cocos2d-x-3.10\cocos\scripting\lua-bindings\auto

4.Scene里一级panel:

一级panel尽量不要固定拉伸,会导致子控件在不同分辨率下移位。如图设置即可。


5.复用cocos studio的csd文件:

直接在A的工程目录下拷贝相关资源文件和csd文件,到B工程的同样目录下即可。

6.用cocos studio导出的csb文件如果不在res根目录下,会导致资源无法被搜索加载。

只需要在appFinishLunch里加上AddSearchPath导出的csb的文件的目录即可。


7.imageView 使用loadTexture从plist文件里读取图片:

代码在GuiConstants.lua 和DeprecatedUIEnum.lua里。


使用plist图片给button用:

local item = ccui.Button:create("crystal.png", "", "", ccui.TextureResType.plistType)

给imageView用:

            self._imgBattle:loadTexture("imgElec4.png",ccui.TextureResType.plistType)

或:
            self._imgBattle:loadTexture("imgElec5.png",UI_TEX_TYPE_PLIST)


2015-08-21 11:01:21 chuanyu 阅读数 1140
  • Cocos2d-x 3.x 项目实战:仿微信飞机大战(射击类游戏)...

    课程目标: 本课程将帮助广大Cocos2d-x学员了解如何使用Cocos2d-x开发一款相对简单的射击类游戏。学员将会了解开发一款完整游戏的基本步骤,并学会如何将《从零开始掌握Cocos2d-x 3.x》中的知识转化为实际的游戏。学员将从这款游戏中学习到如何建立游戏的基本框架、如设置背景音乐、显示欢迎画面、移动飞机、发射子弹、碰撞检测等开发游戏的技术。

    13145 人正在学习 去看看 李宁

cocos studio 版本: V2.3.1.2

cocos2d  js版本: V3.6.1




cocos studio 使用方法:



2017-09-10 01:04:17 yhx69553 阅读数 513
  • Cocos2d-x 3.x 项目实战:仿微信飞机大战(射击类游戏)...

    课程目标: 本课程将帮助广大Cocos2d-x学员了解如何使用Cocos2d-x开发一款相对简单的射击类游戏。学员将会了解开发一款完整游戏的基本步骤,并学会如何将《从零开始掌握Cocos2d-x 3.x》中的知识转化为实际的游戏。学员将从这款游戏中学习到如何建立游戏的基本框架、如设置背景音乐、显示欢迎画面、移动飞机、发射子弹、碰撞检测等开发游戏的技术。

    13145 人正在学习 去看看 李宁

如上图用Cocos Studio 3.10 创建的界面,其中两个Hello word 文本框都绑定在 一个 Node节点上,该Node节点限定在左上都20个像素位置。

模拟运行 iphone4 及 iphone5 确实达到了我的效果。

 


发布资源到工程中运行后发现在 iphone4 分辨率情况下 Hello Word 消失了。

经过一番盘查发现在界面加载的时候存在一定问题。

1.通过继承的如下方法来解析获得节点

virtual cocos2d::Node* createNodeWithFlatBuffers(const flatbuffers::Table* nodeOptions) 


2.解析过程会借用 LayoutComponent 这个类进行自适应设置


    void LayoutComponent::setPositionPercentX(float percentMargin)

    {

        _positionPercentX = percentMargin;


        if (_usingPositionPercentX || _horizontalEdge == HorizontalEdge::Center)

        {

            Node* parent = this->getOwnerParent();

            if (parent != nullptr)

            {

                _owner->setPositionX(parent->getContentSize().width * _positionPercentX);

                this->refreshHorizontalMargin();

            }

        }

    }


3.但是在运行到获得父节点返回为空,原因是先解析后 addChild。




那么只要在 node->addChild(child);

在进行一次设置即可。

加载过程会调用如下代码 

    LayoutComponent* LayoutComponent::bindLayoutComponent(Node* node)

    {

        LayoutComponent * layout = (LayoutComponent*)node->getComponent(__LAYOUT_COMPONENT_NAME);

        if (layout != nullptr)

            return layout;


        layout = new (std::nothrow) LayoutComponent();

        if (layout && layout->init())

        {

            layout->autorelease();

            node->addComponent(layout);

            return layout;

        }

        CC_SAFE_DELETE(layout);

        return nullptr;

    }


Component* Node::getComponent(const std::string& name)

{

    if (_componentContainer)

        return _componentContainer->get(name);

    

    return nullptr;

}


此可见其数据还储存在 _componentContainer

最终如下修改 


使用过程中场景文件的根节点都必须设为 sceneroot,然后对其大小进行根据winSize大小一次设定。


2014-08-14 11:40:51 xuehaiwuya_1 阅读数 1309
  • Cocos2d-x 3.x 项目实战:仿微信飞机大战(射击类游戏)...

    课程目标: 本课程将帮助广大Cocos2d-x学员了解如何使用Cocos2d-x开发一款相对简单的射击类游戏。学员将会了解开发一款完整游戏的基本步骤,并学会如何将《从零开始掌握Cocos2d-x 3.x》中的知识转化为实际的游戏。学员将从这款游戏中学习到如何建立游戏的基本框架、如设置背景音乐、显示欢迎画面、移动飞机、发射子弹、碰撞检测等开发游戏的技术。

    13145 人正在学习 去看看 李宁

当文本框显示文字或者数字时,对于可变的文本就需要调整它的位置来显示的更美观一些,比如居中,左对齐,右对齐,用UI编辑器的时要注意选择custom属性,如下图:

当用Auto属性时,是自动模式,它会根据你设置的文本框位置向两边扩展显示。


所以最好选择custom属性,自己控制显示,如下图:

选择左对齐之后,文本框里的内容会想做对齐,要是显示的文本多的话,自动向右扩充显示,不会向左扩充。

cocos studio试用体验

阅读数 345

没有更多推荐了,返回首页