Cocos2d-x 3.2 Lua示例 ActionTest(动作测试)

前端之家收集整理的这篇文章主要介绍了Cocos2d-x 3.2 Lua示例 ActionTest(动作测试)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Cocos2d-x 3.2 Lua示例 ActionTest(动作测试)


转自http://blog.csdn.net/wwj_748/article/details/38272837


本篇博客继续介绍Cocos2d-x的Lua示例,关于3.2的例子变动不是很大,稍微介绍一下3.2的新特性吧:

3.2版本的新特性

*新的3D动画节点Animation3D/Animate3D

*支持fbx-conv工具生成Sprite3D支持的二进制格式

*支持游戏手柄

*支持快速瓦片地图

*加入utils::cpatureScreen方法用于截屏

*Physicsbody支持缩放和旋转

*加入Node::enumerateChildren和utils::findChildren方法,且支持C++11的正则表达式

*加入Node::setNormalizedPosition方法,Node的位置像素会根据它的服节点的尺寸大小计算


想了解更多详细的内容,可以这个链接http://cn.cocos2d-x.org/tutorial/show?id=1180


本篇博客继续介绍Lua的一个实例,这个实例基本上涵盖了Cocos2d-x的所有基本动作,在这个例子中Cocos2d-x Lua开发者可以了解到如何来使用这些动作。


小巫这里根据官网文档类给大家解析一遍,也顺便加深自己的印象:

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

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

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


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



ScaleTo:缩放动作

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

    --ActionScale
  1. --动作缩放
  2. functionActionScale()
  3. locallayer=cc.Layer:create()
  4. --ScaleTo,第一个参数是缩放时间,第二个参数为缩放因子
  5. localactionTo=cc.ScaleTo:create(2.0,0.5)
  6. --ScaleBy,第一个参数为缩放时间,第二、三个参数为缩放因子
  7. localactionBy=cc.ScaleBy:create(2.0,1.0,10.0)
  8. localactionBy2=cc.ScaleBy:create(2.0,5.0,1.0)
  9. --执行动作
  10. grossini:runAction(actionTo)
  11. --执行动作序列,先正常缩放,然后反执行相反操作
  12. tamara:runAction(cc.Sequence:create(actionBy,actionBy:reverse()))
  13. kathia:runAction(cc.Sequence:create(actionBy2,actionBy2:reverse()))
  14. Helper.subtitleLabel:setString("ScaleTo/ScaleBy")
  15. returnlayer
  16. end



RotateBy类/RotateTo:旋转一个节点

    --ActionRotate
  1. --动作旋转
  2. functionActionRotate()
  3. --RotateTo,第一个参数为持续时间,第二个参数为旋转角度
  4. localactionTo=cc.RotateTo:create(2,45)
  5. localactionTo2=cc.RotateTo:create(2,-45)
  6. localactionTo0=cc.RotateTo:create(2,0)
  7. --执行动作序列,先选择45度之后,
  8. tamara:runAction(cc.Sequence:create(actionTo,actionTo0))
  9. --RotateBy,持续时间为2秒,旋转360度
  10. localactionBy=cc.RotateBy:create(2,360)
  11. localactionByBack=actionBy:reverse()--相反操作
  12. localaction0Retain=cc.RotateTo:create(2,0)
  13. kathia:runAction(cc.Sequence:create(actionTo2,action0Retain))
  14. Helper.subtitleLabel:setString("RotateTo/RotateBy")
  15. end



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

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




    --ActionSkew
  1. --斜歪动作
  2. functionActionSkew()
  3. --SkewTo,第一个参数是持续时间,第二个参数是X轴倾斜的角度,第三个是Y轴的倾斜角度
  4. localactionTo=cc.SkewTo:create(2,37.2,-37.2)
  5. localactionToBack=cc.SkewTo:create(2,0)--返回的一个动作
  6. localactionBy=cc.SkewBy:create(2,0.0,-90.0)
  7. localactionBy2=cc.SkewBy:create(2,45.0,45.0)
  8. --三个精灵执行动作序列
  9. kathia:runAction(cc.Sequence:create(actionBy2,actionBy2:reverse()))
  10. Helper.subtitleLabel:setString("SkewTo/SkewBy")
  11. end



    --ActionRotationalSkewVSStandardSkew
  1. --轮转的倾斜动作和标准的倾斜动作
  2. functionActionRotationalSkewVSStandardSkew()
  3. initWithLayer(layer)
  4. --从父节点中删除一个节点,有一个cleanup参数。如果这个节点是一个孤节点,那么什么都不会发生。
  5. tamara:removeFromParent(true);
  6. grossini:removeFromParent(true);
  7. kathia:removeFromParent( --返回以点为单位的OpenGL视图的大小
  8. locals=cc.Director:getInstance():getWinSize();
  9. --宽高均为100的盒子
  10. localBoxSize=cc.size(100.0,100.0);
  11. --创建层颜色块,c4b,第一个参数是r,代表红色,第二个参数是g,代表绿色,第三个参数是b,代表蓝色,第四个参数是a,代表透明度
  12. localBox=cc.LayerColor:create(cc.c4b(255,255));
  13. --设置锚点
  14. Box:setAnchorPoint(cc.p(0.5,0.5));
  15. --设置盒子大小
  16. Box:setContentSize(BoxSize);
  17. --设置锚点为(0,0)当你摆放这个节点的时候。
  18. --这是一个内部方法,仅仅被Layer和Scene使用。不要在框架外调用。默认值是false,但是在Layer和Scene中是true.
  19. Box:ignoreAnchorPointForPosition(false);
  20. --设置显示位置
  21. Box:setPosition(cc.p(s.width/2,s.height-100-Box:getContentSize().height/2));
  22. --添加到层中
  23. layer:addChild(Box);
  24. --创建一个标签
  25. locallabel=cc.Label:createWithTTF("Standardcocos2dSkew",s_markerFeltFontPath,16);
  26. --设置锚点,这里是中心
  27. label:setAnchorPoint(cc.p(0.5,0.5))
  28. label:setPosition(cc.p(s.width/2,s.height-100+label:getContentSize().height));
  29. layer:addChild(label);
  30. --X轴倾斜360度
  31. localactionTo=cc.SkewBy:create(2,360,0);
  32. --动作返回
  33. localactionToBack=cc.SkewBy:create(2,-360,248)"> localseq=cc.Sequence:create(actionTo,actionToBack)
  34. --运行动作序列
  35. Box:runAction(seq);
  36. --创建层黄颜色块,c4b,代表透明度
  37. Box=cc.LayerColor:create(cc.c4b(255,255));
  38. Box:setContentSize(BoxSize);
  39. Box:ignoreAnchorPointForPosition(false);
  40. Box:getContentSize().height/2));
  41. layer:addChild(Box);
  42. label=cc.Label:createWithTTF("RotationalSkew",248)"> label:setAnchorPoint(cc.p(0.5,0.5))
  43. label:setPosition(cc.p(s.width/2,s.height-250+label:getContentSize().height/2));
  44. layer:addChild(label);
  45. localactionTo2=cc.RotateBy:create(2,248)"> localactionToBack2=cc.RotateBy:create(2,0);
  46. seq=cc.Sequence:create(actionTo2,actionToBack2)
  47. Helper.subtitleLabel:setString("SkewComparison")
  48. returnlayer;
  49. end


    --ActionSkewRotate
  1. --歪斜+旋转+缩放
  2. functionActionSkewRotate()
  3. --从父节点移除子节点
  4. true)
  5. true)
  6. --盒子大小
  7. --层颜色,第1、2、3分别为红绿篮颜色值,第4个为透明度值
  8. Box:setAnchorPoint(cc.p(0,0))
  9. --设置位置
  10. Box:setPosition(190,110)
  11. --设置内容大小
  12. Box:setContentSize(BoxSize)
  13. --标记大小
  14. localmarkrside=10.0
  15. localuL=cc.LayerColor:create(cc.c4b(255,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> Box:addChild(uL)
  16. uL:setContentSize(cc.size(markrside,markrside))
  17. uL:setPosition(0,BoxSize.height-markrside)
  18. uL:setAnchorPoint(cc.p(0,248)"> localuR=cc.LayerColor:create(cc.c4b(0,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> Box:addChild(uR)
  19. uR:setContentSize(cc.size(markrside,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> uR:setPosition(BoxSize.width-markrside,248)"> uR:setAnchorPoint(cc.p(0,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> layer:addChild(Box)
  20. --三个动作SkewTo、RotateTo、ScaleTo
  21. localactionTo=cc.SkewTo:create(2,2)
  22. localrotateTo=cc.RotateTo:create(2,61.0)
  23. localactionScaleTo=cc.ScaleTo:create(2,-0.44,0.47)
  24. localactionScaleToBack=cc.ScaleTo:create(2,1.0)
  25. localrotateToBack=cc.RotateTo:create(2,248)"> --顺序执行三个动作序列
  26. Box:runAction(cc.Sequence:create(actionTo,actionToBack))
  27. Box:runAction(cc.Sequence:create(rotateTo,rotateToBack))
  28. Box:runAction(cc.Sequence:create(actionScaleTo,actionScaleToBack))
  29. Helper.subtitleLabel:setString("Skew+Rotate+Scale")
  30. end

JumpTo类:模仿跳跃的轨迹移动节点

JumpBy类:模仿跳跃的轨迹移动节点.提供reverse方法

    --ActionJump
  1. --跳的动作
  2. functionActionJump()
  3. centerSprites(3)
  4. --模仿跳跃的轨迹移动节点,第一个参数为持续时间,第二个参数为位置,第三个参数为跳的高度,第四个参数跳的次数
  5. localactionTo=cc.JumpTo:create(2,cc.p(300,300),50,4)
  6. localactionBy=cc.JumpBy:create(2,0),4)
  7. localactionUp=cc.JumpBy:create(2,cc.p(0,80,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> localactionByBack=actionBy:reverse()--相反操作
  8. --执行actionTo动作
  9. tamara:runAction(actionTo)
  10. --执行序列动作
  11. grossini:runAction(cc.Sequence:create(actionBy,actionByBack))
  12. --执行无限循环动作
  13. kathia:runAction(cc.RepeatForever:create(actionUp))
  14. Helper.subtitleLabel:setString("JumpTo/JumpBy")
  15. end

CardinalSplineBy类:基础曲线路径


    --ActionCardinalSpline
  1. --曲线运动
  2. functionActionCardinalSpline()
  3. centerSprites(2)
  4. --位置数组
  5. localarray={
  6. cc.p(0,
  7. cc.p(size.width/2-30,
  8. cc.p(size.width/2-30,size.height-80),108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> cc.p(0,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> }
  9. --创建一个连续的基础曲线动作的点数组集合
  10. localaction=cc.CardinalSplineBy:create(3,array,248)"> --返回执行与本Action对象相反操作的新Action对象
  11. localreverse=action:reverse()
  12. --动作序列
  13. localseq=cc.Sequence:create(action,reverse)
  14. tamara:setPosition(cc.p(50,50))
  15. tamara:runAction(seq)
  16. --第一个参数是duration:持续时间,第二个参数为位置数组,第三个参数为tension,表示张力
  17. localaction2=cc.CardinalSplineBy:create(3,1)
  18. localreverse2=action2:reverse()
  19. --创建动作序列
  20. localseq2=cc.Sequence:create(action2,reverse2)
  21. kathia:setPosition(cc.p(size.width/2,50))
  22. kathia:runAction(seq2)
  23. --[[
  24. functiondrawCardinalSpline()
  25. kmGLPushMatrix()
  26. kmGLTranslatef(50,248)"> cc.DrawPrimitives.drawCardinalSpline(array,100)
  27. kmGLPopMatrix()
  28. kmGLPushMatrix()
  29. kmGLTranslatef(size.width/2,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> cc.DrawPrimitives.drawCardinalSpline(array,1,100)
  30. kmGLPopMatrix()
  31. end
  32. array:retain()
  33. localglNode=gl.glNodeCreate()
  34. glNode:setContentSize(cc.size(size.width,size.height))
  35. glNode:setAnchorPoint(cc.p(0.5,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> glNode:registerScriptDrawHandler(drawCardinalSpline)
  36. layer:addChild(glNode,-10)
  37. glNode:setPosition(size.width/2,size.height/2)
  38. ]]--
  39. Helper.titleLabel:setString("CardinalSplineBy/CardinalSplineAt")
  40. Helper.subtitleLabel:setString("CardinalSplinepaths.\nTestingdifferenttensionsforonearray")
  41. end

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


    --ActionCatmullRom
  1. --笛卡尔曲线运动
  2. functionActionCatmullRom()
  3. --设置精灵位置
  4. --定义位置数组
  5. cc.p(80,80),248)"> cc.p(size.width-80,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> cc.p(size.width-80,248)"> cc.p(80,248)"> cc.p(size.width/2,size.height/2),108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> --创建笛卡尔曲线运动,第一个参数为持续时间,第二个参数为位置数组
  6. localaction=cc.CatmullRomBy:create(3,array)
  7. localreverse=action:reverse()--相反操作
  8. --创建动作序列
  9. localarray2={
  10. cc.p(size.width/2,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> localaction2=cc.CatmullRomTo:create(3,array2)
  11. localseq2=cc.Sequence:create(action2,reverse2)
  12. kathia:runAction(seq2)
  13. --[[
  14. localfunctiondrawCatmullRom()
  15. kmGLTranslatef(50,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> cc.DrawPrimitives.drawCatmullRom(array,50)
  16. cc.DrawPrimitives.drawCatmullRom(array2,50)
  17. array2:retain()
  18. localglNode=gl.glNodeCreate()
  19. glNode:setContentSize(cc.size(size.width,size.height))
  20. glNode:setAnchorPoint(cc.p(0.5,248)"> glNode:registerScriptDrawHandler(drawCatmullRom)
  21. layer:addChild(glNode,-10)
  22. glNode:setPosition(size.width/2,size.height/2)
  23. ]]--
  24. --设置标题
  25. Helper.titleLabel:setString("CatmullRomBy/CatmullRomTo")
  26. Helper.subtitleLabel:setString("CatmullRomsplinepaths.Testingreversetoo")
  27. end

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

BezierTo类:贝塞尔曲线动作。


    --ActionBezier
  1. --贝塞尔曲线运动
  2. functionActionBezier()
  3. --sprite1
  4. localbezier=ccBezierConfig()
  5. bezier.controlPoint_1=cc.p(0,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> bezier.controlPoint_2=cc.p(300,-size.height/2)
  6. bezier.endPosition=cc.p(300,248)"> --贝塞尔曲线配置结构
  7. localbezier={
  8. cc.p(300,-size.height/2),248)"> cc.p(300,100),248)"> --以持续时间和贝塞尔曲线的配置结构体为参数创建动作
  9. localbezierForward=cc.BezierBy:create(3,bezier)
  10. localbezierBack=bezierForward:reverse()
  11. --无限循环执行序列
  12. localrep=cc.RepeatForever:create(cc.Sequence:create(bezierForward,bezierBack))
  13. --sprite2
  14. tamara:setPosition(cc.p(80,160))
  15. localbezier2=ccBezierConfig()
  16. bezier2.controlPoint_1=cc.p(100,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> bezier2.controlPoint_2=cc.p(200,248)"> bezier2.endPosition=cc.p(240,160)
  17. localbezier2={
  18. cc.p(100,248)"> cc.p(200,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> cc.p(240,160)
  19. }
  20. --创建贝塞尔曲线动作,第一个参数为持续时间,第二个参数为贝塞尔曲线结构
  21. localbezierTo1=cc.BezierTo:create(2,bezier2)
  22. --sprite3
  23. kathia:setPosition(cc.p(400,248)"> localbezierTo2=cc.BezierTo:create(2,248)"> --运行动作
  24. grossini:runAction(rep)
  25. tamara:runAction(bezierTo1)
  26. kathia:runAction(bezierTo2)
  27. Helper.subtitleLabel:setString("BezierTo/BezierBy")
  28. end

Blink类:闪烁动作


    --ActionBlink
  1. --闪烁运动
  2. functionActionBlink()
  3. --创建两个闪烁动作,第一个参数为持续时间,第二个参数为闪烁次数
  4. localaction1=cc.Blink:create(2,10)
  5. localaction2=cc.Blink:create(2,5)
  6. --两个精灵执行动作
  7. tamara:runAction(action1)
  8. kathia:runAction(action2)
  9. Helper.subtitleLabel:setString("Blink")
  10. end

FadeTo类:渐变动作

FadeIn类:渐变动作 "reverse"动作是FadeOut

FadeOut类:渐变动作 "reverse"动作是FadeIn

    --ActionFade
  1. --渐变动作
  2. functionActionFade()
  3. --设置透明度
  4. tamara:setOpacity(0)
  5. --创建淡进的动作
  6. localaction1=cc.FadeIn:create(1)
  7. --reverse动作,FadeOut
  8. localaction1Back=action1:reverse()
  9. --创建淡出的动作
  10. localaction2=cc.FadeOut:create(1)
  11. --reverse动作,FadeIn动作
  12. localaction2Back=action2:reverse()
  13. tamara:runAction(cc.Sequence:create(action1,action1Back))
  14. kathia:runAction(cc.Sequence:create(action2,action2Back))
  15. Helper.subtitleLabel:setString("FadeIn/FadeOut")
  16. TintTo类:节点变色动作

    TintBy类:节点变色动作,提供reverse方法


      --ActionTint
    1. --变色动作
    2. functionActionTint()
    3. --用持续时间和颜色创建动作,第一个参数为持续时间,后面三个为颜色值
    4. localaction1=cc.TintTo:create(2,255)
    5. localaction2=cc.TintBy:create(2,-127,-255,-127)
    6. Helper.subtitleLabel:setString("TintTo/TintBy")
    7. Animation类:一个用来在精灵对象上表现动画的动画对象.

      AnimationCache类:动画缓存单例类。 如何你想要保存动画,你需要使用这个缓存

      Animate类:创建序列帧动画


        --ActionAnimate
      1. --动画动作
      2. functionActionAnimate()
      3. --创建动画
      4. localanimation=cc.Animation:create()
      5. localnumber,name
      6. fori=1,14do
      7. ifi<10then
      8. number="0"..i
      9. else
      10. number=i
      11. end
      12. name="Images/grossini_dance_"..number..".png"
      13. --用图片名称加一个精灵帧到动画中
      14. animation:addSpriteFrameWithFile(name)
      15. --shouldlast2.8seconds.Andthereare14frames.
      16. --在2.8秒内持续14帧
      17. animation:setDelayPerUnit(2.8/14.0)
      18. --设置"当动画结束时,是否要存储这些原始帧"true为存储
      19. animation:setRestoreOriginalFrame( --创建序列帧动画
      20. localaction=cc.Animate:create(animation)
      21. grossini:runAction(cc.Sequence:create(action,action:reverse()))
      22. --动画缓存单例类。如何你想要保存动画,你需要使用这个缓存。
      23. localcache=cc.AnimationCache:getInstance()
      24. --添加入一个动画到缓存,并以name作为标示
      25. cache:addAnimations("animations/animations-2.plist")
      26. --Returns查找并返回名了name的动画。如果找不到,返回NULL.
      27. localanimation2=cache:getAnimation("dance_1")
      28. --创建第二个序列帧动画
      29. localaction2=cc.Animate:create(animation2)
      30. --执行动作序列
      31. tamara:runAction(cc.Sequence:create(action2,action2:reverse()))
      32. --克隆一个动画
      33. localanimation3=animation2:clone()
      34. --设置循环次数
      35. animation3:setLoops(4)
      36. --创建一个序列帧动画
      37. localaction3=cc.Animate:create(animation3)
      38. kathia:runAction(action3)
      39. Helper.titleLabel:setString("Animation")
      40. Helper.subtitleLabel:setString("Center:Manualanimation.Border:usingfileformatanimation")
      41. end


      Sequence类:顺序执行动作


        --ActionSequence
      1. --动作序列
      2. functionActionSequence()
      3. alignSpritesLeft(1)
      4. --创建动作序列,第一个动作是MoveBy,第二个动作是RotateBy
      5. localaction=cc.Sequence:create(
      6. cc.MoveBy:create(2,cc.p(240,0)),108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> cc.RotateBy:create(2,540))
      7. grossini:runAction(action)
      8. Helper.subtitleLabel:setString("Sequence:Move+Rotate")
      9. --------------------------------------
      10. --ActionSequence2
      11. --动作序列2
      12. localactionSequenceLayer=nil
      13. --动作序列回调1
      14. functionActionSequenceCallback1()
      15. --创建标签
      16. locallabel=cc.Label:createWithTTF("callback1called",16)
      17. label:setPosition(size.width/4,size.height/2)--设置显示位置
      18. --添加节点到层中
      19. actionSequenceLayer:addChild(label)
      20. --动作序列回调2
      21. functionActionSequenceCallback2(sender)
      22. locallabel=cc.Label:createWithTTF("callback2called",248)"> label:setPosition(cc.p(size.width/4*2,size.height/2))--设置显示位置
      23. --动作序列回调3
      24. functionActionSequenceCallback3(sender)
      25. locallabel=cc.Label:createWithTTF("callback3called",248)"> label:setPosition(cc.p(size.width/4*3,153); font-weight:bold; background-color:inherit">functionActionSequence2()
      26. actionSequenceLayer=cc.Layer:create()
      27. initWithLayer(actionSequenceLayer)
      28. grossini:setVisible(false)--设置节点不可见
      29. --创建一个顺序执行的动作,分别为Place:放置节点到某个位置,Show:显示节点;MoveBy:移动到(100,0)的位置;CallFunc:调用回调方法
      30. localaction=cc.Sequence:create(cc.Place:create(cc.p(200,200)),cc.Show:create(),cc.MoveBy:create(1,cc.p(100,cc.CallFunc:create(ActionSequenceCallback1),cc.CallFunc:create(ActionSequenceCallback2),cc.CallFunc:create(ActionSequenceCallback3))
      31. Helper.subtitleLabel:setString("SequenceofInstantActions")
      32. returnactionSequenceLayer
      33. Spawn类:并行动作


          --ActionSpawn
        1. --同时执行一批动作
        2. functionActionSpawn()
        3. alignSpritesLeft(1)
        4. --创建一个并行动作,第一个动作为JumpBy,第二个动作为RotateBy
        5. localaction=cc.Spawn:create(
        6. cc.JumpBy:create(2,4),248)"> cc.RotateBy:create(2,720))
        7. --执行动作
        8. grossini:runAction(action)
        9. Helper.subtitleLabel:setString("Spawn:Jump+Rotate")
        10. end


        Cocos2d-x 中相关动作提供reverse方法,用于执行Action的相反动作,一般以XXXBy这类的,都具有reverse方法


          --ActionReverse
        1. --Action的相反动作
        2. functionActionReverse()
        3. --创建JumpBy动作
        4. localjump=cc.JumpBy:create(2,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> --动作序列,第一个动作为跳跃的动作,第二个是跳的反操作
        5. localaction=cc.Sequence:create(jump,jump:reverse())
        6. Helper.subtitleLabel:setString("Reverseanaction")
        7. end


        DelayTime类:延时动作


          --ActionDelaytime
        1. --延迟动作
        2. functionActionDelaytime()
        3. --创建移动动作,移动到(150,0)位置
        4. localmove=cc.MoveBy:create(1,cc.p(150,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> --第一个动作move,然后延迟2秒,再继续移动
        5. localaction=cc.Sequence:create(move,cc.DelayTime:create(2),move)
        6. Helper.subtitleLabel:setString("DelayTime:m+delay+m")
        7. end


        Repeat类:重复执行动作很多次。次数由参数决定。 要无线循环动作,使用RepeatForever。

        RepeatForever类:无线循环一个动作。 如果要循环有限次数,请使用Repeat动作。


          --ActionRepeat
        1. --重复动作
        2. functionActionRepeat()
        3. alignSpritesLeft(2)
        4. --创建MoveBy动作,移动到(150,0)的位置
        5. locala1=cc.MoveBy:create(1,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> --创建重复执行的动作序列,这里重复3次
        6. localaction1=cc.Repeat:create(cc.Sequence:create(cc.Place:create(cc.p(60,60)),a1),3)
        7. --创建MoveBy动作,移动到(150,0)的位置
        8. locala2=cc.MoveBy:create(1,0))
        9. --创建重复执行的动作序列,这里无限重复执行
        10. localaction2=cc.RepeatForever:create(cc.Sequence:create(a2,a1:reverse()))
        11. --两个精灵分别执行动作
        12. kathia:runAction(action1)
        13. tamara:runAction(action2)
        14. Helper.subtitleLabel:setString("Repeat/RepeatForeveractions")
        15. --ActionRepeatForever
        16. --无限重复的动作
        17. functionrepeatForever(sender)
        18. localrepeatAction=cc.RepeatForever:create(cc.RotateBy:create(1.0,360))
        19. sender:runAction(repeatAction)
        20. functionActionRepeatForever()
        21. centerSprites(1)
        22. --创建一个动作序列,第一个动作先延时1秒,第二个动作调用无限重复的方法
        23. localaction=cc.Sequence:create(
        24. cc.DelayTime:create(1),248)"> cc.CallFunc:create(repeatForever))
        25. Helper.subtitleLabel:setString("CallFuncN+RepeatForever")
        26. --ActionRotateToRepeat
        27. --重复执行旋转的动作
        28. functionActionRotateToRepeat()
        29. centerSprites(2)
        30. --创建两个旋转的动作
        31. localact1=cc.RotateTo:create(1,90)
        32. localact2=cc.RotateTo:create(1,248)"> localseq=cc.Sequence:create(act1,act2)
        33. --一个无限重复的动作,一个重复10次的动作
        34. localrep1=cc.RepeatForever:create(seq)
        35. localrep2=cc.Repeat:create(seq:clone(),10)
        36. tamara:runAction(rep1)
        37. kathia:runAction(rep2)
        38. Helper.subtitleLabel:setString("Repeat/RepeatForever+RotateTo")
        39. CallFunc类:调用一个 'callback' 函数


            --ActionCallFunc
          1. --调用方法
          2. localcallFuncLayer=nil
          3. --调用方法回调函数1
          4. functionCallFucnCallback1()
          5. locallabel=cc.Label:createWithTTF("callback1called",16)
          6. label:setPosition(size.width/4,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> callFuncLayer:addChild(label)
          7. --调用方法回调函数2
          8. functionCallFucnCallback2(sender)
          9. locallabel=cc.Label:createWithTTF("callback2called",108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> label:setPosition(size.width/4*2,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> --调用方法回调函数3
          10. functionCallFucnCallback3(sender)
          11. locallabel=cc.Label:createWithTTF("callback3called",108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> label:setPosition(size.width/4*3,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> --调用“Callback"
          12. functionActionCallFunc()
          13. callFuncLayer=cc.Layer:create()
          14. initWithLayer(callFuncLayer)
          15. --创建动作序列,第一个动作为MoveBy,第二个动作为CallFunc
          16. cc.CallFunc:create(CallFucnCallback1))
          17. --创建动作序列,第一个动作为ScaleBy,第二个动作为淡出,第三个动作为CallFunc
          18. localaction2=cc.Sequence:create(cc.ScaleBy:create(2,2),cc.FadeOut:create(2),cc.CallFunc:create(CallFucnCallback2))
          19. --创建动作序列,第一个动作为RotateBy,第二个动作w为淡出,第三个动作为CallFunc
          20. localaction3=cc.Sequence:create(cc.RotateBy:create(3,360),cc.CallFunc:create(CallFucnCallback3))
          21. --运行动作
          22. Helper.subtitleLabel:setString("Callbacks:CallFuncandfriends")
          23. returncallFuncLayer
          24. end

          OrbitCamera类:创建一个带有起始半径、半径差、起始z角、旋转z角的差、起始x角、旋转x角的差 这些参数的运动视角动作类


            --ActionOrbit
          1. --OrbitCamera类:action视角按照球面坐标轨迹围绕屏幕中心进行旋转
          2. functionActionOrbit()
          3. --创建一个带有起始半径、半径差、起始z角、旋转z角的差、起始x角、旋转x角的差这些参数的运动视角动作类
          4. localorbit1=cc.OrbitCamera:create(2,180,248)"> localaction1=cc.Sequence:create(orbit1,orbit1:reverse())
          5. localorbit2=cc.OrbitCamera:create(2,-45,248)"> localaction2=cc.Sequence:create(orbit2,orbit2:reverse())
          6. localorbit3=cc.OrbitCamera:create(2,90,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> localaction3=cc.Sequence:create(orbit3,orbit3:reverse())
          7. kathia:runAction(cc.RepeatForever:create(action1))
          8. tamara:runAction(cc.RepeatForever:create(action2))
          9. grossini:runAction(cc.RepeatForever:create(action3))
          10. localmove=cc.MoveBy:create(3,-100))
          11. localmove_back=move:reverse()
          12. localseq=cc.Sequence:create(move,move_back)
          13. localrfe=cc.RepeatForever:create(seq)
          14. kathia:runAction(rfe)
          15. tamara:runAction(rfe:clone())
          16. grossini:runAction(rfe:clone())
          17. Helper.subtitleLabel:setString("OrbitCameraaction")
          18. end

          猜你在找的Cocos2d-x相关文章