Quick cocos2dx-Lua(V3.3R1)学习笔记(五)------创建精灵 菜单,让我们做个最简单的点击菜单显示精灵吧

开始第5篇笔记了,感觉前面的几篇写的太少了,Quick cocos2dx 前面加个quick,就是就能让我们快速上手,快速开发......balabala

一,我们来创建第一个精灵

今天我们来创建精灵,我们前面显示的外星人图片就是一个精灵。

quick给我们提供了display.newSprite这个函数来创建精灵。

我们进入display.lua中看看对这个函数的介绍说明。

哇,这么长,我怎么知道那个函数定位在哪里(不是有搜索吗,不能Ctrl+F搜索么+_+)。

我们换个方法,不用搜索,毕竟我们想要看看quicks给我们封装了那些函数,我只要看函数列表就行了。sublime text给我们提供的这个快捷键,显示函数列表,让我们快速定位到想要找的函数

<<Ctrl大法之-----Ctrl+R>>

看到了吧,这样我们就能看到quick究竟封装了那些函数给我们,毕竟现在quick的文档不是那么全面,我们可以定位过去,顺便看看函数的实现过程,这样更能使用好函数

下面就是这个函数的参数说明了

创建并返回一个 Sprite 显示对象。
-- @function [parent=#display] newSprite
-- @param mixed 图像名或SpriteFrame对象
-- @param number x
-- @param number y
-- @param table params
-- @return Sprite#Sprite ret (return value: cc.Sprite)
-- @see Sprite

--[[--

创建并返回一个 Sprite 显示对象。

display.newSprite() 有三种方式创建显示对象:

-   从图片文件创建
-   从缓存的图像帧创建
-   从 SpriteFrame 对象创建

我们用第一个种方式创建

function MainScene:ctor()
	display.newSprite("Hello.png")
		:align(display.CENTER, display.cx, display.cy)   --设置锚点和图片坐标点
		:addTo(self)								   --将生成的图片精灵加入到MainScene的子节点中

end

  

进入模拟器,运行一下看看效果吧

显示成功。ok,我们用第二种方式创建精灵

第二种方式就是调用plist文件加载到精灵缓存中了,我们把一堆小图像打包成大图,生成plist文件,这个文件包含了我们要用的小图在大图的坐标位置

至于如何打包 请搜索 TexturePacker

这个工具使用技巧自行使用谷歌百度大法

function MainScene:ctor()

	display.addSpriteFrames("lqfRoleWalk.plist","lqfRoleWalk.png")
	display.newSprite("#lqfRightStop.png")
		:align(display.CENTER,display.cx, display.cy)
		:addTo(self)
		:setScale(3)     --放大3倍
end

  

注意:与上面第一个示例不同的,我们将文件载入精灵缓存中,调用display.newSprite中参数加了一个#符号,这个#符号是告诉这个函数,从缓存中加载精灵的

我们来看显示效果(我承认,因为我图太小了所以放大了3倍)

二,创建菜单

本来我想用MenuItemFont函数的,结果使用后,各种提示nil value,去论坛搜索一下,才知道,quick现在推荐用UIPushButton来创建菜单的,其实我还是很怀念用文字菜单的,就是没找到使用方法,如果有童鞋知道的,请告知,谢谢

好吧,现在基本没游戏菜单还是用文字的吧,我们就用UIPushButton这个按钮控件做菜单

用的就cc.ui.UIPushButton创建按钮

举个栗子来看

function MainScene:ctor()
	local button1 = cc.ui.UIPushButton.new({normal = "Button01.png",pressed = "Button01Pressed.png"})
	button1:align(display.CENTER,display.cx,display.cy)
	button1:addTo(self)
end

  

菜单按钮就这么创建,我们先看效果

-- @param table images 各种状态的图片
-- @param table options 参数表 其中scale9为是否缩放
状态值:
-   normal 正常状态
-   pressed 按下状态
-   disabled 无效状态

  

我们看到上面我们第二个参数中有个scale9的参数,知道的童鞋就知道这是九宫格,不知道的请百度实现原理以及这样做的优点,我们用两段代码对比一下就能看出效果了

function MainScene:ctor()
	local button1 = cc.ui.UIPushButton.new({normal = "Button01.png",pressed = "Button01Pressed.png"})
	button1:align(display.CENTER,display.cx,display.cy)
	button1:addTo(self)
	button1:setButtonSize(400,200)
end

  

我们将菜单尺寸放大

阿西吧,真难看啊思密达!!!&……&¥#¥@(我还是会一点思密达语言的)

我们将传一个九宫格参数进去看效果

function MainScene:ctor()
	local button1 = cc.ui.UIPushButton.new({normal = "Button01.png",pressed = "Button01Pressed.png"},{scale9 = true})
	button1:align(display.CENTER,display.cx,display.cy)
	button1:addTo(self)
	button1:setButtonSize(400,200)
end

  

运行效果

很直白的看出不同了吧!

三,进入主题,给按钮加上回调函数,来显示隐藏图片

话说写了这么多才进入主题,我语文老师会不会打我啊!O(∩_∩)O~(语文老师:我和你们说啊,作文,开头就要点题,批卷老师哪有时间给你全看完啊。。。balabala)

按钮我们显示了出来了,现在如何给按钮加上处理函数呢,不然光点击,没效果,玩个球啊

--------------------------------
-- 注册用户点击监听
-- @function [parent=#UIButton] onButtonClicked
-- @param function callback 监听函数
-- @return UIButton#UIButton 

-- end --

function UIButton:onButtonClicked(callback)
    self:addButtonClickedEventListener(callback)
    return self
end

function UIButton:addButtonPressedEventListener(callback)
    return self:addEventListener(UIButton.PRESSED_EVENT, callback)
end

-- start --

--------------------------------
-- 注册用户按下监听
-- @function [parent=#UIButton] onButtonPressed
-- @param function callback 监听函数
-- @return UIButton#UIButton 

-- end --

function UIButton:onButtonPressed(callback)
    self:addButtonPressedEventListener(callback)
    return self
end

function UIButton:addButtonReleaseEventListener(callback)
    return self:addEventListener(UIButton.RELEASE_EVENT, callback)
end

-- start --

--------------------------------
-- 注册用户释放监听
-- @function [parent=#UIButton] onButtonRelease
-- @param function callback 监听函数
-- @return UIButton#UIButton 

-- end --

function UIButton:onButtonRelease(callback)
    self:addButtonReleaseEventListener(callback)
    return self
end

function UIButton:addButtonStateChangedEventListener(callback)
    return self:addEventListener(UIButton.STATE_CHANGED_EVENT, callback)
end
(这不是UIButton的函数么,不是UIPushButton的啊 ?)我们在UIPushButton.lua文件,会看见,其实这个按钮继承了UIButton了,所以我们能调用UIButton的函数

function MainScene:ctor()
	local button1 = cc.ui.UIPushButton.new({normal = "Button01.png",pressed = "Button01Pressed.png"},{scale9 = true})
	button1:align(display.CENTER,display.cx,display.cy)
	button1:addTo(self)
	button1:setButtonSize(200,100)

	button1:onButtonClicked(function()
		print("欢迎收看xxxx")
		print("大家好,我是小莫")
		print("我是小小莫")
	end	)

end

  

看到效果了吧,我们开始做点击按钮显示图片了,很简单

function MainScene:ctor()
	local sprite = display.newSprite("Hello.png")
	sprite:align(display.CENTER, display.cx, display.cy)
	sprite:addTo(self)
	sprite:setVisible(false)

	local button1 = cc.ui.UIPushButton.new({normal = "Button01.png",pressed = "Button01Pressed.png"},{scale9 = true})
	button1:align(display.CENTER,display.cx,100)
	button1:addTo(self)
	button1:setButtonSize(200,100)

	button1.showSprieState_ = 1
	button1:setButtonLabel("normal", cc.ui.UILabel.new({UILabelType = 2,text = "显示图片",size = 30}))
	button1:setButtonLabel("pressed", cc.ui.UILabel.new({UILabelType = 2,text = "显示图片",size = 30}))
	button1:onButtonClicked(function()
		if button1.showSprieState_ == 1 then
			button1.showSprieState_ = 2
			sprite:setVisible(true)
			button1:setButtonLabel("normal", cc.ui.UILabel.new({UILabelType = 2,text = "隐藏图片",size = 30}))
			button1:setButtonLabel("pressed", cc.ui.UILabel.new({UILabelType = 2,text = "隐藏图片",size = 30}))

		else
			button1.showSprieState_ = 1
			sprite:setVisible(false)
			button1:setButtonLabel("normal", cc.ui.UILabel.new({UILabelType = 2,text = "显示图片",size = 30}))
			button1:setButtonLabel("pressed", cc.ui.UILabel.new({UILabelType = 2,text = "显示图片",size = 30}))

		end
	end	)

end

  

时间: 2024-10-29 19:08:39

Quick cocos2dx-Lua(V3.3R1)学习笔记(五)------创建精灵 菜单,让我们做个最简单的点击菜单显示精灵吧的相关文章

Lua学习笔记(五):函数

函数有两种用途: 1).完成指定的任务,这种情况下函数作为调用语句使用: 2).计算并返回值,这种情况下函数作为赋值语句表达式使用. 1 function func_name (arguments-list) 2 statements-list; 3 end; 4 5 --调用函数的时候,如果参数列表为空,必须使用()表明是函数调用 6 print(8*9, 9/8) 7 a = math.sin(3) + math.cos(10) 8 print(os.date()) 9 10 --上述规则有

Cocos2d-x 3.1.1 学习笔记(二)创建自定义项目

一.通过命令创建项目 前面搭建好环境后,怎样创建自己的cocos2d-x项目呢? 先来看看cocos2dx 3.1的目录吧 这就是 cocos2dx 3.1的目录, 3.1版本的创建跟以前的不同了(好吧,又变了),我们先把 download-deps.py 和 setup.py 执行一遍,按住shift+鼠标右键 输入cocos命令 回车 这里会看到一些命令的声明,这里我只说下 创建新的项目,输入命令cocos new 这里 -p      是包名 -l       是文件格式 有cpp.lua

Cocos2dx 3.1.1 学习笔记整理(1)

最近手痒了,不小心下载了cocos2dx 3.1.1,又搞了个VS2012,于是头脑发热的搞起 3.1.1了. 我是有多么的不专心啊. 已经把自己之前的学习内容从2.2.3迁移到了3.1.1,除了骨骼动画相关的之外. 简单记录一下过程: 1 安装与搭建 解压cocos2dx3.1.1版本,根目录下会有download-deps.py和setup.py, 预先用python分别对这两个文件跑一遍,有问题的话解决问题,没问题的话最好了. 2新建项目 跑完以上两个py文件之后,会自己将所有相关的系统环

Cocos2d-x 3.1.1 学习笔记(四)学习打包Android平台APK!

从cocos2dx 3.1项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭建一次之后,以后就会非常快捷! 一.下载Android环境 搭建Android环境需要用到Android SDK.NDK.Ant和JDK: Android SDK下载http://developer.android.com/sdk/index.html Android NDk下载http://developer.android.com/tools/sdk/ndk/index.html Android JDK下

Caliburn.Micro学习笔记(五)----协同IResult

Caliburn.Micro学习笔记(五)----协同IResult 今天说一下协同IResult 看一下IResult接口 /// <summary> /// Allows custom code to execute after the return of a action. /// </summary> public interface IResult { /// <summary> /// Executes the result using the specif

基于Cocos2dx+Lua v3.x的RichLabel

RichLabel 简介 RichLabel基于Cocos2dx+Lua v3.x解析字符串方面使用了labelparser,它可以将一定格式的字符串,转换为lua中的表结构扩展标签极其简单,只需添加一个遵守规则的标签插件即可,无需改动已存在代码!!! (标签插件都在labels文件夹下) labelparser的详解labelparser在github上的源码RichLabel在github上的源码 支持图片(缩放,旋转,是否可见) 支持文本属性(字体,大小,颜色,阴影,描边,发光) 支持标签

angular学习笔记(五)-阶乘计算实例(1)

<!DOCTYPE html> <html ng-app> <head> <title>2.3.2计算阶乘实例1</title> <meta charset="utf-8"> <script src="../angular.js"></script> <script src="script.js"></script> </

NLTK学习笔记(五):分类和标注词汇

[TOC] 词性标注器 之后的很多工作都需要标注完的词汇.nltk自带英文标注器pos_tag import nltk text = nltk.word_tokenize("And now for something compleyely difference") print(text) print(nltk.pos_tag(text)) 标注语料库 表示已经标注的标识符:nltk.tag.str2tuple('word/类型') text = "The/AT grand/J

Linux System Programming 学习笔记(五) 进程管理

1. 进程是unix系统中两个最重要的基础抽象之一(另一个是文件) A process is a running program A thread is the unit of activity inside of a process the virtualization of memory is associated with the process, the threads all share the same memory address space 2. pid The idle pro