cocos lua 动画详解

注:笔者不把一大段代码贴出来,分段解释比较舒服一点

MoveBy:通过修改节点对象的位置属性来改变节点对象的x,y像素。 x,y的坐标是相对于这个对象的位置来说的。 几个MoveBy动作可以同时被调用,最终的运动是这几个单独运动的综合

MoveTo:移动节点对象到位置x,y。x,y是绝对坐标,通过修改它的位置属性来改变它们的值。 几个MoveTo动作可以被同时调用,并且最终的运动是几个单独运动的综合。

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片

  1. --------------------------------------  
  2. -- ActionMove  
  3. -- 动作移动  
  4. --------------------------------------  
  5. local function ActionMove()  
  6.   -- 创建层  
  7.   local layer = cc.Layer:create()  
  8.   -- 初始化层  
  9.   initWithLayer(layer)  
  10.     
  11.   centerSprites(3)  
  12.   -- MoveBy动作  
  13.   local actionBy = cc.MoveBy:create(2, cc.p(80, 80))  
  14.   -- MoveBy的逆反操作  
  15.   local actionByBack = actionBy:reverse()  
  16.   
  17.   --   
  18.   tamara:runAction(cc.MoveTo:create(2, cc.p(size.width - 40, size.height - 40)))  
  19.   grossini:runAction(cc.Sequence:create(actionBy, actionByBack))  
  20.   kathia:runAction(cc.MoveTo:create(1, cc.p(40, 40)))  
  21.   
  22.   Helper.subtitleLabel:setString("MoveTo / MoveBy")  
  23.   return layer  
  24. end  

 

 


ScaleTo:缩放动作

ScaleBy: 缩放动作,继承自ScaleTo,提供reverse方法

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片

  1. --------------------------------------  
  2. -- ActionScale  
  3. -- 动作缩放  
  4. --------------------------------------  
  5. local function ActionScale()  
  6.   local layer = cc.Layer:create()  
  7.   initWithLayer(layer)  
  8.   
  9.   centerSprites(3)  
  10.   
  11.   -- ScaleTo,第一个参数是缩放时间,第二个参数为缩放因子  
  12.   local actionTo = cc.ScaleTo:create(2.0, 0.5)  
  13.   -- ScaleBy, 第一个参数为缩放时间,第二、三个参数为缩放因子  
  14.   local actionBy = cc.ScaleBy:create(2.0, 1.0, 10.0)  
  15.   local actionBy2 = cc.ScaleBy:create(2.0, 5.0, 1.0)  
  16.   
  17.   -- 执行动作  
  18.   grossini:runAction(actionTo)  
  19.   -- 执行动作序列,先正常缩放,然后反执行相反操作  
  20.   tamara:runAction(cc.Sequence:create(actionBy, actionBy:reverse()))  
  21.   kathia:runAction(cc.Sequence:create(actionBy2, actionBy2:reverse()))  
  22.   
  23.   Helper.subtitleLabel:setString("ScaleTo / ScaleBy")  
  24.   return layer  
  25. end  

 

 

 

RotateBy类/RotateTo:旋转一个节点

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片

  1. --------------------------------------  
  2. -- ActionRotate  
  3. -- 动作旋转  
  4. --------------------------------------  
  5. local function ActionRotate()  
  6.   local layer = cc.Layer:create()  
  7.   initWithLayer(layer)  
  8.   
  9.   centerSprites(3)  
  10.   
  11.   -- RotateTo,第一个参数为持续时间,第二个参数为旋转角度  
  12.   local actionTo = cc.RotateTo:create( 2, 45)  
  13.   local actionTo2 = cc.RotateTo:create( 2, -45)  
  14.   local actionTo0 = cc.RotateTo:create(2 , 0)  
  15.   -- 执行动作序列,先选择45度之后,  
  16.   tamara:runAction(cc.Sequence:create(actionTo, actionTo0))  
  17.   
  18.   -- RotateBy,持续时间为2秒,旋转360度  
  19.   local actionBy = cc.RotateBy:create(2 , 360)  
  20.   local actionByBack = actionBy:reverse() -- 相反操作  
  21.   grossini:runAction(cc.Sequence:create(actionBy, actionByBack))  
  22.   
  23.   local action0Retain = cc.RotateTo:create(2 , 0)  
  24.   
  25.   kathia:runAction(cc.Sequence:create(actionTo2, action0Retain))  
  26.   
  27.   Helper.subtitleLabel:setString("RotateTo / RotateBy")  
  28.   return layer  
  29. end  


 

 


SkewTo:通过修改节点对象的skewX和skewY属性来使节点对象倾斜到一个给定的角度。

SkewBy:通过skewX和skewY的度数来使节点对象倾斜。

 

 

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片

  1. --------------------------------------  
  2. -- ActionSkew  
  3. -- 斜歪动作  
  4. --------------------------------------  
  5. local function ActionSkew()  
  6.   local layer = cc.Layer:create()  
  7.   initWithLayer(layer)  
  8.   
  9.   centerSprites(3)  
  10.   -- SkewTo,第一个参数是持续时间,第二个参数是X轴倾斜的角度,第三个是Y轴的倾斜角度  
  11.   local actionTo = cc.SkewTo:create(2, 37.2, -37.2)  
  12.   local actionToBack = cc.SkewTo:create(2, 0, 0)-- 返回的一个动作  
  13.   local actionBy = cc.SkewBy:create(2, 0.0, -90.0)  
  14.   local actionBy2 = cc.SkewBy:create(2, 45.0, 45.0)  
  15.   local actionByBack = actionBy:reverse()  
  16.   
  17.   -- 三个精灵执行动作序列  
  18.   tamara:runAction(cc.Sequence:create(actionTo, actionToBack))  
  19.   grossini:runAction(cc.Sequence:create(actionBy, actionByBack))  
  20.   kathia:runAction(cc.Sequence:create(actionBy2, actionBy2:reverse()))  
  21.   
  22.   Helper.subtitleLabel:setString("SkewTo / SkewBy")  
  23.   return layer  
  24. end  

 

 

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片

  1. --ActionRotationalSkewVSStandardSkew  
  2. --轮转的倾斜动作和标准的倾斜动作  
  3. local function ActionRotationalSkewVSStandardSkew()  
  4.   
  5.   local layer = cc.Layer:create()  
  6.   initWithLayer(layer)  
  7.   
  8.   -- 从父节点中删除一个节点,有一个cleanup参数。 如果这个节点是一个孤节点,那么什么都不会发生。  
  9.   tamara:removeFromParent(true);  
  10.   grossini:removeFromParent(true);  
  11.   kathia:removeFromParent(true);  
  12.     
  13.   -- 返回以点为单位的 OpenGL 视图的大小  
  14.   local s = cc.Director:getInstance():getWinSize();  
  15.   -- 宽高均为100的盒子  
  16.   local boxSize = cc.size(100.0, 100.0);  
  17.   -- 创建层颜色块,c4b,第一个参数是r,代表红色,第二个参数是g,代表绿色,第三个参数是b,代表蓝色,第四个参数是a,代表透明度  
  18.   local box = cc.LayerColor:create(cc.c4b(255,255,0,255));  
  19.   -- 设置锚点  
  20.   box:setAnchorPoint(cc.p(0.5,0.5));  
  21.   -- 设置盒子大小  
  22.   box:setContentSize( boxSize );  
  23.   -- 设置锚点为(0,0)当你摆放这个节点的时候。  
  24.   -- 这是一个内部方法,仅仅被Layer和Scene使用。不要在框架外调用。 默认值是false,但是在Layer和Scene中是true.  
  25.   box:ignoreAnchorPointForPosition(false);  
  26.   -- 设置显示位置  
  27.   box:setPosition(cc.p(s.width/2, s.height - 100 - box:getContentSize().height/2));  
  28.   -- 添加到层中  
  29.   layer:addChild(box);  
  30.   -- 创建一个标签  
  31.   local label = cc.Label:createWithTTF("Standard cocos2d Skew", s_markerFeltFontPath, 16);  
  32.   -- 设置锚点,这里是中心  
  33.   label:setAnchorPoint(cc.p(0.5, 0.5))  
  34.   label:setPosition(cc.p(s.width/2, s.height - 100 + label:getContentSize().height));  
  35.   layer:addChild(label);  
  36.   -- X轴倾斜360度  
  37.   local actionTo = cc.SkewBy:create(2, 360, 0);  
  38.   -- 动作返回  
  39.   local actionToBack = cc.SkewBy:create(2, -360, 0);  
  40.   local seq = cc.Sequence:create(actionTo, actionToBack)  
  41.   -- 运行动作序列  
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值