Cocos2d-x-lua学习点滴

Lua下的方法。自己项目经验,个人见解,不能确保正确。

Sprite:

local Light = CCSprite:create("light.png")

Light:setPosition(ccp(300,300))

Light:setScale(1)

Light:setVisible(true)

self.secondLevelMenuLayer:addChild(Light)

Button:

searchButton = Button:create()

searchButton:setScale(1.2)

searchButton:setTouchEnabled(true)

searchButton:loadTextures("button-search1.png","button-search2.png","button-search3.png") -- 3个""不可或缺。可nil。

searchButton:setPosition(CCPoint(280,400))

self.superView.secondLevelMenuLayer:addWidget(searchButton)

searchButton:setEnabled(false)

Button的禁用状态。

在button不可触摸的时候设置图片灰色。

Button:setTouchEnable(false)

同一时候设置Button:setBright(false)

Fade效果

FadeIn->是从暗逐渐变亮

FadeOut->从亮逐渐变消失。

FadeTo->从亮逐渐变暗

local actionTime = 0.2

local array = CCArray:create()

array:addObject(CCFadeTo:create(0.2, 100))

local action = CCSequence:create(array)

self.LayerColor:runAction(action)

当前引擎UI界面不可实现此效果。

Sprite的旋转

local Light = CCSprite:create("light.png")

Light:setPosition(ccp(480,510))

Light:setScale(0.8)

Light:setVisible(true)

L = CCRotateBy:create(5,360) --RotateTo角度360就没效果。有网帖

Light:runAction(CCRepeatForever:create(L))

缩放效果

local ImageView_victory = self.secondLevelMenuLayer:getWidgetByName("ImageView_victory")

local  array = CCArray:create()

array:addObject(CCScaleBy:create(0.5,1.5))--參数为time。scale

array:addObject(CCScaleTo:create(0.5,1))

local action1 = CCSequence:create(array)

ImageView_victory:runAction(action1)

UI界面分步载入的实现

local imgs = {} --创建数组

imgs[1] = ImageView_victory

local imgs0 = {}

imgs0[1] = level

imgs0[2] = shengwang

imgs0[3] = gold

local imgs1 = {}

imgs1[1] = hero0

imgs1[2] = hero1

imgs1[3] = hero2

imgs1[4] = hero3

imgs1[5] = hero4

local imgs2 = {}

imgs2[1] = jingyantiao0

imgs2[2] = jingyan0

imgs2[3] = jingyantiao1

imgs2[4] = jingyan1

imgs2[5] = jingyantiao2

imgs2[6] = jingyan2

imgs2[7] = jingyantiao3

imgs2[8] = jingyan3

imgs2[9] = jingyantiao4

imgs2[10] = jingyan4

local imgs3 = {}

imgs3[1] = exp0

imgs3[2] = exp1

imgs3[3] = exp2

imgs3[4] = exp3

imgs3[5] = exp4

local imgs4 = {}

imgs4[1] = ImageView_sun_0

imgs4[2] = ImageView_sun_1

imgs4[3] = ImageView_sun_2

imgs4[4] = ImageView_sun_3

imgs4[5] = ImageView_sun_4

local imgs5 = {}

imgs5[1] = Button_again

imgs5[2] = Button_share

imgs5[3] = Button_sure

local all_imgs = {}

all_imgs[1] = imgs

all_imgs[2] = imgs0

all_imgs[3] = imgs1

all_imgs[4] = imgs2

all_imgs[5] = imgs3

all_imgs[6] = imgs4

all_imgs[7] = imgs5

local index = 1

function callback() --for循环遍历数组

if all_imgs[index] then

for k, v in ipairs(all_imgs[index]) do

if v then

v:setEnabled(true)

end

end

end

index = index +1

if index >7 then

self.secondLevelMenuLayer:stopAllActions()

end

end

local array = CCArray:create()

local callfunc = CCCallFunc:create(callback)

array:addObject(callfunc)

local sequence = CCSequence:create(array)

local forever  = CCRepeatForever:create(sequence)

self.secondLevelMenuLayer:runAction(forever)

UI上的控件获取须要强转

--战斗结束界面Button实现

local function back()

CCDirector:sharedDirector():popScene()

end

local Button_close = tolua.cast(self.secondLevelMenuLayer:getWidgetByName("Button_close"),"Button")--lua的强转

Button_close:setScale(1.3)

Button_close:addTouchEventListener(back)

local Button_sure = self.secondLevelMenuLayer:getWidgetByName("Button_sure")

Button_sure:addTouchEventListener(back)

local Button_again = self.secondLevelMenuLayer:getWidgetByName("Button_again")

local function enterBattle(sender, eventType)

local pvpScene = PVPScene:new()

pvpScene:init()

CCDirector:sharedDirector():pushScene(pvpScene.scene)

end

Button_again:addTouchEventListener(enterBattle)

Button直接获取UI

创建UI

FormationUI = class ()

local ccs = require ("ccs")

function FormationUI:ctor()

self.node = GUIReader:shareReader():widgetFromJsonFile("fight-object_1.ExportJson")--当初做的时候json文件出错当时一直崩溃

end

function FormationUI:init()

end

Button获取UI(不通过scene)

--formationButton

local function enterFormation(sender,eventType)

if eventType == ccs.TouchEventType.ended then

local formationUI = FormationUI.new()

self.secondLevelMenuLayer:addWidget(formationUI.node)

formationUI:init()

end

end

local formationButton = self.menuLayer:getWidgetByName("formationButton")

formationButton:addTouchEventListener(enterFormation)

获取屏幕尺寸

local visibleSize = CCDirector:sharedDirector():getVisibleSize()

获取json文件

self.node = GUIReader:shareReader():widgetFromJsonFile("battleLose.ExportJson")

加入当前副本指示箭头(跳动效果)

jiantou = CCSprite:create("image_jiantou.png")

jiantou:setPosition(ccp(170,460))

jiantou:setZOrder(1)

self.superView.secondLevelMenuLayer:addChild(jiantou)

local actionUp = CCJumpBy:create(20,ccp(0,0),40,20)

local actionByBack = actionUp:reverse()

local array = CCArray:create()

array:addObject(actionUp)

array:addObject(actionByBack)

local action = CCSequence:create(array)

jiantou:runAction(CCRepeatForever:create(action))

显示一精灵的方法。

没有就创建,有就隐藏。sender,eventType调用函数。參数为xy坐标

--显示箭头

function RegionMapUI:showArrow(x, y)

--假设没有箭头就新建

if not self.arrow then

self.arrow = CCSprite:create("image_jiantou.png")

self.arrow:setZOrder(1000)

self.arrow:setAnchorPoint(CCPoint(0.52,0.17))

self.node:addNode(self.arrow)

end

--推断是否在运行动画

if self.arrow:numberOfRunningActions() then

self.arrow:stopAllActions()

end

self.arrow:setVisible(true)

self.arrow:setPosition(CCPoint(x,y))

self.arrow:runAction(CCRepeatForever:create(CCJumpBy:create(0.8,ccp(0,0),15,1)))

end

--隐藏箭头

function RegionMapUI:hideArrow()

--假设有箭头就隐藏

if self.arrow then

self.arrow:stopAllActions()

self.arrow:setVisible(false)

end

end

self:showArrow(sender:getPositionX(), sender:getPositionY())

self.winSize = cc.Director:getInstance():getWinSize()

setPosition(self.winSize.width/2,self.winSize.height/3)

时间: 2024-10-13 01:52:02

Cocos2d-x-lua学习点滴的相关文章

Lua学习笔记(七):迭代器与泛型for

1.迭代器与闭包 迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素.在Lua中我们常常使用函数来描述迭代器,每次调用该函数就返回集合的下一个元素. 迭代器需要保留上一次成功调用的状态和下一次成功调用的状态,也就是他知道来自于哪里和将要前往哪里.闭包提供的机制可以很容易实现这个任务.记住:闭包是一个内部函数,它可以访问一个或者多个外部函数的外部局部变量.每次闭包的成功调用后这些外部局部变量都保存他们的值(状态).当然如果要创建一个闭包必须要创建其外部局部变量.所以一个典型的闭包的结构包含

Lua学习 1) —— Android调用变量取值与赋值

2014-07-08 Lua脚本语言,嵌入在App中扩展开发是很不错的. 关于Android与Lua的环境搭配,我直接下载别人编好的.so与.jar(放到libs下就好了) 下面简单介绍一下Android调用Lua中的变量以及赋值 LuaState mLuaState; mLuaState = LuaStateFactory.newLuaState(); mLuaState.openLibs();//加载库 mLuaState.LdoString("x = 101");//执行一段lu

Lua学习(2)——表达式

1. lua算术操作符lua支持的算数操作符: + - * /除 ^指数 %取模 -符号 2. lua关系操作符 <小于 >大于 <= >= == ~=不等于 3. 逻辑操作符 and,or,not 所有逻辑操作符将false,nil 视为假,其他视为真. >print(4 and 5) 5 max = (x>y) and x or y 类似于C语言中选择表达式 max = x>y?x:y 4. 字符串连接 ..表达式 > print("Hello

Lua学习——table

table类型实现了“关联数组”.“关联数组”是一种具有特殊索引方式的数组.不仅可以通过证书来索引它,还可以使用字符串或其他类型(除了nil)来索引它.table是Lua中主要的数据结构机制(事实也是仅有的),具有强大的功能.基于table可以以一种简单.统一和高效的方式来表示普通数组.符号表.集合.记录.队列和其他数据结构. table的特性: table是一个“关联数组”,数组的索引可以是数字或者是字符串 table 的默认初始索引一般以 1 开始 table 的变量只是一个地址引用,对 t

Lua学习(4)——函数

在Lua中函数的调用方式和C语言基本相同,如:print("Hello World")和a = add(x, y).唯一的差别是,如果函数只有一个参数,并且该参数的类型为字符串常量或table的构造器,那么圆括号可以省略,如print "Hello World"和f {x = 20, y = 20}.    Lua为面对对象式的调用也提供了一种特殊的语法--冒号操作符.表达式o.foo(o,x)的另一种写法是o:foo(x).冒号操作符使调用o.foo时将o隐含的作

[转]修改ulimit值的学习点滴

修改ulimit值的学习点滴: 网上有好多修改ulimit的文章,但大多仅限于对当前交互shell的修改,如果只是为了提高某一次执行脚本的文件句柄打开数,以下方法非常有效: 操作系统: CentOS 5.1 x86_64 1)修改当前交互终端的limit值 查询当前终端的文件句柄数: ulimit -n 回车,一般的系统默认的1024. 修改文件句柄数为65535,ulimit -n 65535.此时系统的文件句柄数为65535. 2)将ulimit 值添加到/etc/profile文件中(适用

(原创)cocos2d-x 3.0+ lua 学习和工作(2) : 单一继承简单介绍

-- 星月相随倾心贡献~~~ -- 本章简单介绍一下:单一继承 -- 多继承本人还没有用过,主要是lua多继承感觉不好用~~~个人感觉~~~大汗~! -- example: local Base = class( "Base" ) Base.__index = Base function Base:ctor(...) print( self.__cname ) -- 输出:类名字.class( "xxx" ), self._cname 就是 xxx end func

Lua学习笔记9:多文件

一 终端中执行多个文件:-l 加入在文件一中定义了一个变量,在另一文件中输出这个变量,代码如下: --file1.lua num = 100 --file2.lua print(num) 终端输入(注意:不是lua命令行): lua -lfile1 -lfile2 注意:不要加上文件后缀名.lua 二 命令行中加载文件 --lib.lua function norm(x, y) local n2 = x^2 + y^2 return math.sqrt(n2) end function twic

lua学习笔记10:lua简单命令行

前面多次用了命令行,这次就好好学下命令行: 一 格式 lua [options][script][args] 二 具体命令 -e 直接将命令传个lua -l 加载一个文件 -i 进入交互模式 例如,终端输入: lua -e "print(math.sin(12))" lua学习笔记10:lua简单命令行,布布扣,bubuko.com

lua学习笔记11:lua中的小技巧

lua中的小技巧,即基础lua语言本身的特种,进行一个些简化的操作 一 巧用or x = x or v 等价于: if not x then x = v end 如果x为nil或false,就给他赋值为 二 三元运算符实现 a and b or c 类似C语言: a ? b : c and 的运算由优先级高于or lua学习笔记11:lua中的小技巧,布布扣,bubuko.com