注:笔者不把一大段代码贴出来,分段解释比较舒服一点
MoveBy:通过修改节点对象的位置属性来改变节点对象的x,y像素。 x,y的坐标是相对于这个对象的位置来说的。 几个MoveBy动作可以同时被调用,最终的运动是这几个单独运动的综合
MoveTo:移动节点对象到位置x,y。x,y是绝对坐标,通过修改它的位置属性来改变它们的值。 几个MoveTo动作可以被同时调用,并且最终的运动是几个单独运动的综合。
[javascript] view plaincopy
- --------------------------------------
- -- ActionMove
- -- 动作移动
- --------------------------------------
- local function ActionMove()
- -- 创建层
- local layer = cc.Layer:create()
- -- 初始化层
- initWithLayer(layer)
- centerSprites(3)
- -- MoveBy动作
- local actionBy = cc.MoveBy:create(2, cc.p(80, 80))
- -- MoveBy的逆反操作
- local actionByBack = actionBy:reverse()
- --
- tamara:runAction(cc.MoveTo:create(2, cc.p(size.width - 40, size.height - 40)))
- grossini:runAction(cc.Sequence:create(actionBy, actionByBack))
- kathia:runAction(cc.MoveTo:create(1, cc.p(40, 40)))
- Helper.subtitleLabel:setString("MoveTo / MoveBy")
- return layer
- end
ScaleTo:缩放动作
ScaleBy: 缩放动作,继承自ScaleTo,提供reverse方法
[javascript] view plaincopy
- --------------------------------------
- -- ActionScale
- -- 动作缩放
- --------------------------------------
- local function ActionScale()
- local layer = cc.Layer:create()
- initWithLayer(layer)
- centerSprites(3)
- -- ScaleTo,第一个参数是缩放时间,第二个参数为缩放因子
- local actionTo = cc.ScaleTo:create(2.0, 0.5)
- -- ScaleBy, 第一个参数为缩放时间,第二、三个参数为缩放因子
- local actionBy = cc.ScaleBy:create(2.0, 1.0, 10.0)
- local actionBy2 = cc.ScaleBy:create(2.0, 5.0, 1.0)
- -- 执行动作
- grossini:runAction(actionTo)
- -- 执行动作序列,先正常缩放,然后反执行相反操作
- tamara:runAction(cc.Sequence:create(actionBy, actionBy:reverse()))
- kathia:runAction(cc.Sequence:create(actionBy2, actionBy2:reverse()))
- Helper.subtitleLabel:setString("ScaleTo / ScaleBy")
- return layer
- end
RotateBy类/RotateTo:旋转一个节点
[javascript] view plaincopy
- --------------------------------------
- -- ActionRotate
- -- 动作旋转
- --------------------------------------
- local function ActionRotate()
- local layer = cc.Layer:create()
- initWithLayer(layer)
- centerSprites(3)
- -- RotateTo,第一个参数为持续时间,第二个参数为旋转角度
- local actionTo = cc.RotateTo:create( 2, 45)
- local actionTo2 = cc.RotateTo:create( 2, -45)
- local actionTo0 = cc.RotateTo:create(2 , 0)
- -- 执行动作序列,先选择45度之后,
- tamara:runAction(cc.Sequence:create(actionTo, actionTo0))
- -- RotateBy,持续时间为2秒,旋转360度
- local actionBy = cc.RotateBy:create(2 , 360)
- local actionByBack = actionBy:reverse() -- 相反操作
- grossini:runAction(cc.Sequence:create(actionBy, actionByBack))
- local action0Retain = cc.RotateTo:create(2 , 0)
- kathia:runAction(cc.Sequence:create(actionTo2, action0Retain))
- Helper.subtitleLabel:setString("RotateTo / RotateBy")
- return layer
- end
SkewTo:通过修改节点对象的skewX和skewY属性来使节点对象倾斜到一个给定的角度。
SkewBy:通过skewX和skewY的度数来使节点对象倾斜。
[javascript] view plaincopy
- --------------------------------------
- -- ActionSkew
- -- 斜歪动作
- --------------------------------------
- local function ActionSkew()
- local layer = cc.Layer:create()
- initWithLayer(layer)
- centerSprites(3)
- -- SkewTo,第一个参数是持续时间,第二个参数是X轴倾斜的角度,第三个是Y轴的倾斜角度
- local actionTo = cc.SkewTo:create(2, 37.2, -37.2)
- local actionToBack = cc.SkewTo:create(2, 0, 0)-- 返回的一个动作
- local actionBy = cc.SkewBy:create(2, 0.0, -90.0)
- local actionBy2 = cc.SkewBy:create(2, 45.0, 45.0)
- local actionByBack = actionBy:reverse()
- -- 三个精灵执行动作序列
- tamara:runAction(cc.Sequence:create(actionTo, actionToBack))
- grossini:runAction(cc.Sequence:create(actionBy, actionByBack))
- kathia:runAction(cc.Sequence:create(actionBy2, actionBy2:reverse()))
- Helper.subtitleLabel:setString("SkewTo / SkewBy")
- return layer
- end
[javascript] view plaincopy
- --ActionRotationalSkewVSStandardSkew
- --轮转的倾斜动作和标准的倾斜动作
- local function ActionRotationalSkewVSStandardSkew()
- local layer = cc.Layer:create()
- initWithLayer(layer)
- -- 从父节点中删除一个节点,有一个cleanup参数。 如果这个节点是一个孤节点,那么什么都不会发生。
- tamara:removeFromParent(true);
- grossini:removeFromParent(true);
- kathia:removeFromParent(true);
- -- 返回以点为单位的 OpenGL 视图的大小
- local s = cc.Director:getInstance():getWinSize();
- -- 宽高均为100的盒子
- local boxSize = cc.size(100.0, 100.0);
- -- 创建层颜色块,c4b,第一个参数是r,代表红色,第二个参数是g,代表绿色,第三个参数是b,代表蓝色,第四个参数是a,代表透明度
- local box = cc.LayerColor:create(cc.c4b(255,255,0,255));
- -- 设置锚点
- box:setAnchorPoint(cc.p(0.5,0.5));
- -- 设置盒子大小
- box:setContentSize( boxSize );
- -- 设置锚点为(0,0)当你摆放这个节点的时候。
- -- 这是一个内部方法,仅仅被Layer和Scene使用。不要在框架外调用。 默认值是false,但是在Layer和Scene中是true.
- box:ignoreAnchorPointForPosition(false);
- -- 设置显示位置
- box:setPosition(cc.p(s.width/2, s.height - 100 - box:getContentSize().height/2));
- -- 添加到层中
- layer:addChild(box);
- -- 创建一个标签
- local label = cc.Label:createWithTTF("Standard cocos2d Skew", s_markerFeltFontPath, 16);
- -- 设置锚点,这里是中心
- label:setAnchorPoint(cc.p(0.5, 0.5))
- label:setPosition(cc.p(s.width/2, s.height - 100 + label:getContentSize().height));
- layer:addChild(label);
- -- X轴倾斜360度
- local actionTo = cc.SkewBy:create(2, 360, 0);
- -- 动作返回
- local actionToBack = cc.SkewBy:create(2, -360, 0);
- local seq = cc.Sequence:create(actionTo, actionToBack)
- -- 运行动作序列