热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Cocos2D-X学习6:在屏幕上显示图像

之前学习了文字的显示,现在继续学习如何显示图像,实际方法和增添文字很像,因此学起来十分容易了。cocos2d-x通过精灵类来显示图像,下面先来理解试一下精灵的概念。在cocos2d-

之前学习了文字的显示,现在继续学习如何显示图像,实际方法和增添文字很像,因此学起来十分容易了。


cocos2d-x通过精灵类来显示图像,下面先来理解试一下精灵的概念。在cocos2d-x的游戏中,一个怪物、道具、角色,都是被看成一个精灵,游戏背景作为独立的一部分,也可以看做一个精灵。


接下来将做一个简单的游戏开始界面学习图像的显示,代码如下:

	Size size = Director::getInstance()->getVisibleSize(); //获取屏幕尺寸
Vec2 origin = Director::getInstance()->getVisibleOrigin(); //获取可视屏原点的坐标
auto* background = Sprite::create("background.jpg"); //创建精灵类,背景图像为background.jpg
background->setPosition(size.width / 2, size.height / 2); //让背景图像居中显示
background->setScale(0.7f); //缩小背景图像
addChild(background); //将背景图像加入到场景中

//增添三个按钮
auto* button1 = Sprite::create("button.png"); //第一个按钮素材图像为button.png
button1->setPosition(550, size.height / 2); //设置按钮位置
button1->setScale(0.6f); //缩小图像
addChild(button1); //将第一个按钮加入到场景中

auto* button2 = Sprite::create("button.png"); //第二个按钮素材图像为button.png
button2->setPosition(550, size.height / 2 - 60); //设置按钮位置
button2->setScale(0.6f); //缩小图像
addChild(button2); //将第二个按钮加入到场景中

auto* button3 = Sprite::create("button.png"); //第三个按钮素材图像为button.png
button3->setPosition(550, size.height / 2 - 120); //设置按钮位置
button3->setScale(0.6f); //缩小图像
addChild(button3); //将第三个按钮加入到场景中

auto* renwu = Sprite::create("renwu.png"); //增加一幅人物图像
renwu->setPosition(0, 0); //设置图像位置
renwu->setAnchorPoint(Vec2(0, 0)); //设置精灵锚点
renwu->setScale(0.5f); //缩小图像
addChild(renwu); //将图像加入到场景中

return true;

界面中添加了背景图像、三个按钮和左侧的人物图像。效果图如下:



主要内容是创建精灵和设置精灵的属性,还使用了获取当前屏幕尺寸。

1、获取当前屏幕尺寸

不同设备屏幕存在差异,为了适配不同设备,因此使用Director::getInstance()->getVisibleSize()获取屏幕尺寸。然后通过屏幕尺寸来设定精灵的位置。


2、创建精灵:

类似于标签的创建,使用Sprite::create创建精灵,参数为要使用的图像名称,十分简单。


3、设置属性包含了位置、缩放、设置锚点。

位置设置:与标签相同,使用setPosition进行设置。

缩放设置:为了将原始图像与屏幕大小适配,因此需要对图像进行缩放。使用setScale进行缩放,参数是一个float值,表示缩放比例。

锚点设置:锚点就是setPosition的参数坐标在精灵中的位置,默认锚点是位于中心,也就是setPosition设定的是中心坐标。使用setAnchorPoint更改锚点位置,参数为一个Point或Vec2值,在本文的代码中Vec2(0, 0)为左上角,通过更改Point或Vec2的值来修改锚点位置。






推荐阅读
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 本文详细介绍了Java中的访问器(getter)和修改器(setter),探讨了它们在保护数据完整性、增强代码可维护性方面的重要作用。通过具体示例,展示了如何正确使用这些方法来控制类属性的访问和更新。 ... [详细]
  • andr ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 使用GDI的一些AIP函数我们可以轻易的绘制出简 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • dotnet 通过 Elmish.WPF 使用 F# 编写 WPF 应用
    本文来安利大家一个有趣而且强大的库,通过F#和C#混合编程编写WPF应用,可以在WPF中使用到F#强大的数据处理能力在GitHub上完全开源Elmis ... [详细]
  • 本文探讨了在Java中实现系统托盘最小化的两种方法:使用SWT库和JDK6自带的功能。通过这两种方式,开发者可以创建跨平台的应用程序,使窗口能够最小化到系统托盘,并提供丰富的交互功能。 ... [详细]
  • 本文探讨了在Java多线程环境下,如何确保具有相同key值的线程能够互斥执行并按顺序输出结果。通过优化代码结构和使用线程安全的数据结构,我们解决了线程同步问题,并实现了预期的并发行为。 ... [详细]
  • 本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ... [详细]
author-avatar
梦蕾AngeL
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有