`
weiyinchao88
  • 浏览: 1234405 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多
Cocos2d-x 3.2 Lua示例 CaptureScreen(截屏)


转载请注明:IT_xiao小巫

Cocos2d-x截屏功能是从3.2开始提供的,本篇博客就是介绍Cocos2d-x 3.2中Lua示例中的截屏功能。效果如下所示:




例子代码如下:
--[[
截屏测试
CaptureScreenTest
]]--
-- 获取屏幕大小
local winSize = cc.Director:getInstance():getWinSize()
local kTagSprite = 1
local childTag   = 119


-- 创建层
local function createLayer()
  -- 创建层
  local layer = cc.Layer:create()
  local filename = ""-- 文件名

  -- 标题
  local title = cc.Label:createWithTTF("New Renderer", "fonts/arial.ttf", 36)
  title:setColor(cc.c3b(255,255,0)) -- 设置颜色为黄色
  layer:addChild(title, 1, 10000) -- 第一个参数为node,第二个参数为zorder,第三个参数是tag
  title:setPosition( cc.p(VisibleRect:center().x, VisibleRect:top().y - 30))-- 设置位置top,center

  -- 子标题
  local subTitle = cc.Label:createWithTTF("Capture screen test, press the menu items to capture the screen", "fonts/arial.ttf", 12)
  subTitle:setColor(cc.c3b(255,255,0)) -- 设置为黄色
  layer:addChild(subTitle, 1, 10001)  -- 设置tag为10001
  subTitle:setPosition( cc.p(VisibleRect:center().x, VisibleRect:top().y - 60) )-- 设置位置

  -- 左边位置
  local left  = cc.p(winSize.width / 4, winSize.height / 2)
  -- 右边位置
  local right = cc.p(winSize.width / 4 * 3, winSize.height / 2)

  -- 精灵1
  local sp1 = cc.Sprite:create("Images/grossini.png")
  sp1:setPosition(left)-- 设置初始位置在左边
  local move1 = cc.MoveBy:create(1, cc.p(winSize.width/2, 0))--移动动作,持续1秒
  -- 动作序列1
  local seq1  = cc.RepeatForever:create(cc.Sequence:create(move1, move1:reverse()))
  layer:addChild(sp1)--添加精灵1
  sp1:runAction(seq1)-- 执行动作序列
  -- 精灵2
  local sp2 = cc.Sprite:create("Images/grossinis_sister1.png")
  sp2:setPosition(right)-- 设置初始位置在右边
  local move2 = cc.MoveBy:create(1, cc.p(-winSize.width/2, 0))-- 移动动作,持续1秒
  -- 动作序列2
  local seq2  = cc.RepeatForever:create(cc.Sequence:create(move2, move2:reverse()))
  layer:addChild(sp2)-- 添加精灵2
  sp2:runAction(seq2) -- 执行动作序列2

  --截屏回调方法
  local function afterCaptured(succeed, outputFile)
    if succeed then
      local sp = cc.Sprite:create(outputFile)
      layer:addChild(sp, 0, childTag)
      sp:setPosition(winSize.width / 2, winSize.height / 2)
      sp:setScale(0.25) -- 显示缩放
      fileName = outputFile
    else
      cclog("Capture screen failed.")
    end
  end

  -- 点击标签回调的方法
  local function onCaptured(tag, sender)
    -- 移除纹理缓存
    cc.Director:getInstance():getTextureCache():removeTextureForKey(fileName)
    layer:removeChildByTag(childTag)
    fileName = "CaptureScreenTest.png"
    -- 截屏
    cc.utils:captureScreen(afterCaptured, fileName)
  end


  local ttfConfig = {} -- 字体配置表
  ttfConfig.fontFilePath = "fonts/arial.ttf" -- 字体路径
  ttfConfig.fontSize     = 24  -- 字体大小
  -- 创建一个标签,名为capture all 
  local label1 = cc.Label:createWithTTF(ttfConfig, "capture all", cc.TEXT_ALIGNMENT_CENTER, winSize.width)
  -- 创建菜单项标签
  local mi1 = cc.MenuItemLabel:create(label1)
  -- 注册点击回调方法
  mi1:registerScriptTapHandler(onCaptured)
  -- 创建菜单
  local menu = cc.Menu:create(mi1)
  -- 添加菜单到层中
  layer:addChild(menu)
  -- 设置在宽的一半,高的1/4的位置上
  menu:setPosition(winSize.width / 2, winSize.height / 4)

  return layer
end

--------------------------------
-- CaptureScreen
--------------------------------
function CaptureScreenTestMain()
  -- 创建一个场景
  local scene = cc.Scene:create()
  -- 添加场景到层中
  scene:addChild(createLayer())
  -- 添加Back菜单项
  scene:addChild(CreateBackMenuItem())
  return scene
end

Cocos2d-x 提供以下方法用于截屏:
cc.utils:captureScreen(afterCaptured, fileName)
其中afterCaptured是自定义的回调方法,fileName为截屏文件名


如果觉得博文对您有用处,请到下面链接为小巫投上神圣的一票。

分享到:
评论

相关推荐

    大富翁手机游戏开发实战基于Cocos2d-x3.2引擎

    资源名称:大富翁手机游戏开发实战基于Cocos2d-x3.2引擎内容简介:李德国编著的《大富翁手机游戏开发实战(基于 Cocos2d-x3.2引擎)》使用Cocos2d-x游戏引擎技术,带领读者一步一步从零开始进行大富翁移动游戏的开发...

    Cocos2d-x3.2大富翁游戏项目开发apk测试版

    Cocos2d-x 3.2 大富翁游戏项目开发apk测试版

    大富翁手机游戏开发实战 基于Cocos2d-x3.2引擎

    李德国编著的《大富翁手机游戏开发实战(基于 Cocos2d-x3.2引擎)》使用Cocos2d-x游戏引擎技术,带领读者一步一步从零开始进行大富翁移动游戏的开发。本书根据大富翁项目一一展开讲解游戏开发过程中涉及的各方面内容...

    cocos2d-x-3.2旧版引擎下载

    cocos2d-x-3.2下载,不多说。或者可以下载另一个资源 cocos引擎老版本集合(cocos2d-x-2.2.1 - 3.5) http://download.csdn.net/download/crazymagicdc/9982656

    《Cocos2d-x实战 Lua卷》源码.7z

    《Cocos2d-x实战 Lua卷》是一本深入讲解Cocos2d-x游戏开发的书籍,专注于使用Lua脚本语言进行编程。Cocos2d-x是一个开源的游戏开发框架,广泛应用于2D游戏、教育应用和各种互动媒体项目。这本书的源码提供了丰富的...

    cocos2d-x-3.2_richer(第四部分).rar

    这个压缩包“cocos2d-x-3.2_richer(第四部分).rar”包含了使用Cocos2d-x 3.2版本开发大富翁游戏项目的部分源代码,这将带我们深入理解如何在Cocos2d-x中构建一款完整的游戏。 1. **Cocos2d-x 3.2 版本特性** - ...

    Cocos2d-x实战_Lua卷 _第2版

    《Cocos2d-x实战_Lua卷_第2版》是一本专为游戏开发者准备的指南,主要聚焦于使用Cocos2d-x框架与Lua语言进行游戏开发。Cocos2d-x是一个开源的游戏开发框架,它允许开发者用C++、Lua或者JavaScript编写游戏,并且可以...

    cocos2d-x3.2贪吃蛇游戏代码与资源

    《cocos2d-x3.2贪吃蛇游戏代码与资源》是一款基于cocos2d-x3.2引擎开发的经典游戏——贪吃蛇。cocos2d-x是一个强大的开源跨平台2D游戏开发框架,使用C++语言编写,支持iOS、Android、Windows等多个操作系统。在这款...

    Cocos2d-X 3.2 API 文档

    Cocos2d-X 3.2 API 文档是开发者们深入了解和使用Cocos2d-X游戏引擎的关键资源。Cocos2d-X是一个跨平台的2D游戏开发框架,基于C++,并支持Objective-C和JavaScript等多种编程语言。版本3.2在前一版本的基础上进行了...

    魔塔游戏(某教程的实例,已改成cocos2d-x 3.2)

    【标题】:“魔塔游戏(某教程的实例,已改成cocos2d-x 3.2)” 在本文中,我们将深入探讨如何使用cocos2d-x 3.2框架来开发一个魔塔游戏,这是一个经典的策略角色扮演游戏,通常包含复杂的数值计算和策略决策。cocos2d...

    cocos2d-x+lua游戏demo源码

    【cocos2d-x+lua游戏demo源码】是一个基于cocos2d-x游戏引擎和lua脚本语言的游戏示例项目。cocos2d-x是一个跨平台的2D游戏开发框架,广泛应用于移动设备,如iOS和Android。lua是一种轻量级的、面向过程的编程语言,...

    cocos2d-x3.2 实现的华容道代码和资源

    《cocos2d-x3.2 实现的华容道代码和资源详解》 华容道,源于中国古代的棋类游戏,是一种极具挑战性的益智游戏。在编程领域,使用cocos2d-x3.2这个强大的游戏开发框架来实现华容道,可以让玩家在数字世界中体验这一...

    cocos2d-x3.2版本2048和FlappyBird游戏源码

    《cocos2d-x3.2版本2048与FlappyBird游戏源码解析》 Cocos2d-x是一款跨平台的2D游戏开发框架,广泛应用于移动设备上的游戏开发,尤其在Android、iOS以及Windows等平台上。本篇文章将深入探讨基于cocos2d-x3.2版本的...

    cocos2d-x3.2《魔塔》游戏源码

    《cocos2d-x3.2《魔塔》游戏源码》是一款基于cocos2d-x 3.2版本开发的2D角色扮演游戏,它展示了如何利用这一强大的游戏引擎来构建一个完整的游戏项目。cocos2d-x是一个开源的游戏开发框架,支持多种平台,包括iOS、...

    cocos2d-x3.2横版游戏源码

    《cocos2d-x3.2横版游戏源码解析》 Cocos2d-x是一个开源的游戏开发框架,被广泛应用于跨平台2D游戏的开发,支持iOS、Android、Windows等多个操作系统。本篇将深入探讨cocos2d-x3.2版本在横版游戏开发中的应用,以及...

    Cocos2d-x实战lua卷

    《Cocos2d-x实战Lua卷》是一本深入探讨Cocos2d-x游戏开发与lua脚本结合使用的专业书籍。Cocos2d-x是一个开源的游戏引擎,广泛应用于2D游戏开发,而Lua则是一种轻量级的脚本语言,以其简洁易学、高效灵活的特点,常被...

    Cocos2d-x + Lua接入iOS原生SDK的实现方案 - Cocos2d-x 开发笔记 - Cocos2d-x系列教程

    在Cocos2d-x + Lua开发游戏的过程中,有时需要接入iOS原生SDK,例如应用内购买、广告SDK或社交平台SDK等。这篇文章主要探讨如何在Cocos2d-x结合Lua的环境中实现与iOS原生SDK的对接。首先,我们要明确这里的iOS原生...

    cocos2D-lua 核心编程内置代码

    在“Cocos2d-x之Lua核心编程(第二版)_配套代码”中,我们可以找到一系列的示例和代码,这些代码涵盖了Cocos2d-lua的核心功能和编程技巧。 一、Cocos2d-lua简介 Cocos2d-lua是Cocos2d-x的一个扩展,它允许开发者使用...

    Cocos2d-x之Lua核心编程 配套代码

    在"Cocos2d-x之Lua核心编程"的配套代码中,我们可以深入学习如何结合Cocos2d-x和Lua来构建游戏或应用的核心功能。 1. **Lua与Cocos2d-x的集成**:Cocos2d-x提供了Lua绑定,使得开发者可以使用Lua脚本来控制游戏逻辑...

    cocos2d-x 3.2 物理小游戏教程 block it

    《cocos2d-x 3.2 物理小游戏教程 "Block It" 深度解析》 在游戏开发领域,cocos2d-x 是一个广泛使用的开源游戏引擎,尤其适用于2D游戏的开发。本教程将聚焦于利用cocos2d-x 3.2 版本制作一款名为 "Block It" 的物理...

Global site tag (gtag.js) - Google Analytics