情景
今天写代码时,又要写一个很常见的动画,就是变大变小模拟那个弹性的赶脚,很常用但写起来挺麻烦,封装一下用起来就简单多了。
当然我也知道有缓动动画(EaseAction)可以实现反弹效果,但这不是重点
使用
-- 模拟3个cc.ScaleTo,但是不限于3个,个数没有限制 -- 1> 0.08秒 放大1.2倍 -- 2> 0.1秒 放大0.9倍 -- 3> 0.1秒 放大1倍 actionScaleTo()
实现
方式一:根据参数动态生成lua代码,然后使用loadstring加载代码
function actionScaleTo(...) -- 奇数位置是时间,偶数位置是倍数 local arg = {...} local container = {} , #arg, do ]) table.insert(container, xstr) end local actions_str = table.concat(container, ",") local xstr = string.format("return cc.Sequence:create(%s )", actions_str) return loadstring(xstr)() end
方式二:直接创建
function actionScaleTo(...) -- 奇数位置是时间,偶数位置是倍数 local arg = {...} local container = {} , #arg, do ]) table.insert(container, scale) end return cc.Sequence:create(unpack(container)) end