Cocos2d-x 3,androidapp开发教程

CatmullRomBy类 :这是一个按照笛卡尔曲线移动目标点的动作.

**

**


– ActionCatmullRom

– 笛卡尔曲线运动


local function ActionCatmullRom()

local layer = cc.Layer:create()

initWithLayer(layer)

centerSprites(2)

– 设置精灵位置

tamara:setPosition(cc.p(50, 50))

– 定义位置数组

local array = {

cc.p(0, 0),

cc.p(80, 80),

cc.p(size.width - 80, 80),

cc.p(size.width - 80, size.height - 80),

cc.p(80, size.height - 80),

cc.p(80, 80),

cc.p(size.width / 2, size.height / 2),

}

– 创建笛卡尔曲线运动,第一个参数为持续时间,第二个参数为位置数组

local action = cc.CatmullRomBy:create(3, array)

local reverse = action:reverse()-- 相反操作

– 创建动作序列

local seq = cc.Sequence:create(action, reverse)

tamara:runAction(seq)

local array2 = {

cc.p(size.width / 2, 30),

cc.p(size.width -80, 30),

cc.p(size.width - 80, size.height - 80),

cc.p(size.width / 2, size.height - 80),

cc.p(size.width / 2, 30),

}

local action2 = cc.CatmullRomTo:create(3, array2)

local reverse2 = action2:reverse()

local seq2 = cc.Sequence:create(action2, reverse2)

kathia:runAction(seq2)

–[[

local function drawCatmullRom()

kmGLPushMatrix()

kmGLTranslatef(50, 50, 0)

cc.DrawPrimitives.drawCatmullRom(array, 50)

kmGLPopMatrix()

cc.DrawPrimitives.drawCatmullRom(array2,50)

end

array:retain()

array2:retain()

local glNode = gl.glNodeCreate()

glNode:setContentSize(cc.size(size.width, size.height))

glNode:setAnchorPoint(cc.p(0.5, 0.5))

glNode:registerScriptDrawHandler(drawCatmullRom)

layer:addChild(glNode,-10)

glNode:setPosition( size.width / 2, size.height / 2)

]]–

– 设置标题

Helper.titleLabel:setString(“CatmullRomBy / CatmullRomTo”)

Helper.subtitleLabel:setString(“Catmull Rom spline paths. Testing reverse too”)

return layer

end

BezierBy类:贝塞尔曲线动作。提供reverse方法,用于执行相反操作

BezierTo类:贝塞尔曲线动作。

******



– ActionBezier

– 贝塞尔曲线运动


local function ActionBezier()

local layer = cc.Layer:create()

initWithLayer(layer)

centerSprites(3)

– sprite 1

–[[

local bezier = ccBezierConfig()

bezier.controlPoint_1 = cc.p(0, size.height / 2)

bezier.controlPoint_2 = cc.p(300, - size.height / 2)

bezier.endPosition = cc.p(300, 100)

]]–

– 贝塞尔曲线配置结构

local bezier = {

cc.p(0, size.height / 2),

cc.p(300, - size.height / 2),

cc.p(300, 100),

}

– 以持续时间和贝塞尔曲线的配置结构体为参数创建动作

local bezierForward = cc.BezierBy:create(3, bezier)

local bezierBack = bezierForward:reverse()

– 无限循环执行序列

local rep = cc.RepeatForever:create(cc.Sequence:create(bezierForward, bezierBack))

– sprite 2

tamara:setPosition(cc.p(80,160))

–[[

local bezier2 = ccBezierConfig()

bezier2.controlPoint_1 = cc.p(100, size.height / 2)

bezier2.controlPoint_2 = cc.p(200, - size.height / 2)

bezier2.endPosition = cc.p(240, 160)

]]–

local bezier2 ={

cc.p(100, size.height / 2),

cc.p(200, - size.height / 2),

cc.p(240, 160)

}

– 创建贝塞尔曲线动作,第一个参数为持续时间,第二个参数为贝塞尔曲线结构

local bezierTo1 = cc.BezierTo:create(2, bezier2)

– sprite 3

kathia:setPosition(cc.p(400,160))

local bezierTo2 = cc.BezierTo:create(2, bezier2)

– 运行动作

grossini:runAction(rep)

tamara:runAction(bezierTo1)

kathia:runAction(bezierTo2)

Helper.subtitleLabel:setString(“BezierTo / BezierBy”)

return layer

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值