cocos-Lua07帧动画&骨骼动画
来源:互联网 发布:淘宝网卖什么比较畅销 编辑:程序博客网 时间:2024/05/19 22:06
学而时习之:
常用Action
MoveTo
MoveBy
RoateTo
RoateBy
.....
lua-test
-----------------------
Sequene 一组动作顺序播放
Spawn 一组动作同时执行
次数 Repeat RepeatForEver
取反和跟踪
动画的播放Animate
-----------------------------------------
Action是对节点处理的计划任务的封装
--------------------------------------------
实现动画的播放
1.定义动画的每一帧
local allframe={}
for i=1,5 do
allframe[i]=cc.SpriteFrame:create(...)
end
2.定义Animation
local a=cc.Animation:createWithSpriteFrames(allframe,0.3)
3.定义Animate
local animate=cc.Animate:create(a)
4.在一个Sprite上执行Action
local sp=cc.Sprite:create()
sp:runAction(animate)
---------------------------------------
TexturePacker纹理打包工具
cc.SpriteFrameCache来加载打包后的纹理图片
---------------------------------------------
动画的切换
cc.AnimationCache
思路呀很清晰:
使用Animation Editor创建动画
1。帧动画
1.1 使用Animation Editor创建一个项目
1.2 需要使用的动画序列拷贝到Resources文件夹
1.3 编辑动画
1.4 导出动画文件export
1.5 在代码中加载
ccs.ArmatureDataManager:getInstance():
addArmatureFileInfo("frameAnimation/frameAnimation.ExportJson")
local arm=ccs.Armature:create("frameAnimation")
arm:getAnimation():play("walk") --播放某一个动画
arm:getAnimation():playWithIndex(0) --播放动画编辑器中的第一个动画
layer:addChild(arm)
arm:setPosition(self.winsize.width/2,self.winsize.height/2)
2。骨骼动画
动画的每一帧通过小的图片块来拼接
动画效果更细腻
图片资源更小
骨骼
图片块
帧《==》 多个骨骼
动画《==》多个帧
----------------------------------------------
刀塔传奇----------------骨骼动画
2.1 在动画编辑器中创建项目
2.2 将动画所需要的骨骼图片拷贝到Resource中
2.3 定义动画的第一帧
2.4 定义骨骼 每个图块对应一个骨骼
2.5 定义图片块到骨骼的绑定
2.6 定义骨骼的父子关系
2.7 进入动画模式
定义每个图层的动作
2.8 保存项目导出动画
2.9 在代码中加载动画
ccs.ArmatureDataManager:getInstance():addArmatureFileInfo("boneAni/boneAni.ExportJson")
local arm=ccs.Armature:create("boneAni")
arm:getAnimation():play("walk")
layer:addChild(arm)
arm:setPosition(self.winsize.width/2,self.winsize.height/2)
代码撸啊(Lua)。。。嘻嘻嘻!!!
FrameAniScene.lua
--帧动画
local FrameAniScene=class("FrameAniScene",function ()
return cc.Scene:create()
end)
--create函数
function FrameAniScene:create()
local fs=FrameAniScene:new()
fs:addChild(fs:init())
return fs
end
--ctor函数
function FrameAniScene:ctor()
self.winsize=cc.Director:getInstance():getWinSize()
self.walk=true --true walk false run
end
--init函数
function FrameAniScene:init()
local layer=cc.Layer:create()
--添加通过Animation Editor编辑器编辑好的动画
ccs.ArmatureDataManager:getInstance():addArmatureFileInfo("frameAnimation/frameAnimation.ExportJson")
local arm=ccs.Armature:create("frameAnimation")
arm:getAnimation():play("walk")
-- arm:getAnimation():playWithIndex(0)
layer:addChild(arm)
arm:setPosition(self.winsize.width/2,self.winsize.height/2)
local function touchBegan(t,e)
self.walk=not self.walk
--实现动画的切换
if self.walk then
arm:getAnimation():play("walk")
else
arm:getAnimation():play("run")
end
return true
end
local listener=cc.EventListenerTouchOneByOne:create()
listener:registerScriptHandler(touchBegan,cc.Handler.EVENT_TOUCH_BEGAN)
cc.Director:getInstance():getEventDispatcher()
:addEventListenerWithSceneGraphPriority(listener,layer)
return layer
end
return FrameAniScene
BoneScene.lua
local BoneScene=class("BoneScene",function ()
return cc.Scene:create()
end)
--create函数
function BoneScene:create()
local bs=BoneScene:new()
bs:addChild(bs:init())
return bs
end
--ctor函数
function BoneScene:ctor()
self.winsize=cc.Director:getInstance():getWinSize()
self.displayIndex=0
end
--init函数
function BoneScene:init()
local layer=cc.Layer:create()
--骨骼动画的加载
ccs.ArmatureDataManager:getInstance():addArmatureFileInfo("chuanzhang/chuanzhang.ExportJson")
local arm=ccs.Armature:create("chuanzhang")
arm:getAnimation():play("walk")
layer:addChild(arm)
arm:setPosition(self.winsize.width/2,self.winsize.height/2)
--动态修改骨骼的皮肤
-- cc.SpriteFrameCache:getInstance():addSpriteFrames("weapon.plist")
-- local weapon =
-- {
-- "weapon_f-sword.png",
-- "weapon_f-sword2.png",
-- "weapon_f-sword3.png",
-- "weapon_f-sword4.png",
-- "weapon_f-sword5.png",
-- "weapon_f-knife.png",
-- "weapon_f-hammer.png",
-- }
--
-- local i = 1
-- for i = 1,table.getn(weapon) do
-- --定义骨骼动画的皮肤
-- local skin = ccs.Skin:createWithSpriteFrameName(weapon[i])
-- arm:getBone("Layer27"):addDisplay(skin, i - 1)
-- end
-- handling touch events
local function onTouchEnded(touches, event)
-- self.displayIndex = (self.displayIndex + 1) % (table.getn(weapon) - 1)
-- --修改骨骼对应的皮肤
-- arm:getBone("Layer27"):changeDisplayWithIndex(self.displayIndex, true)
arm:getAnimation():play("attack")
end
local listener = cc.EventListenerTouchAllAtOnce:create()
listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCHES_ENDED )
cc.Director:getInstance():getEventDispatcher()
:addEventListenerWithSceneGraphPriority(listener,layer)
return layer
end
return BoneScene
- cocos-Lua07帧动画&骨骼动画
- Cocos骨骼动画
- cocos骨骼动画
- COCOS 骨骼动画
- COCOS学习笔记--骨骼动画
- cocos-Lua添加骨骼动画
- Cocos骨骼动画功能解密
- Cocos2d-x 3.0-Cocos Studio动画编辑器的帧动画和骨骼动画详解
- 骨骼动画详解-Cocos Studio
- cocos spine 骨骼动画.水平翻转
- cocos studio 2.3支持骨骼动画编辑
- cocos studio 2.3.3制作骨骼动画
- 骨骼动画详解-Cocos Studio
- Cocos Creator动态加载DragonBones骨骼动画
- Cocos2d-x 3.0final 终结者系列教程22Cocos Studio动画编辑器的帧动画和骨骼动画详解
- Cocos2d-x 3.0final 终结者系列教程22Cocos Studio动画编辑器的帧动画和骨骼动画详解
- Cocos2d-x 3.0final 终结者系列教程22Cocos Studio动画编辑器的帧动画和骨骼动画详解
- 骨骼动画
- 获取当前activity的屏幕截图
- svd(奇异值分解)
- 关于synchronized以及ReetrantLock、ReentrantReadWriteLock的选择
- windows tips cmd提示符下 日期及文件压缩 脚本
- libevent - 一个奇怪的问题
- cocos-Lua07帧动画&骨骼动画
- js 取checkbox中 多个被选中的值
- 跟我学Spring3--注解实现Bean依赖注入
- android系统架构分析
- 栈-Min Stack(实现一个栈,用常数级时间找出栈中的最小值)
- widgets之RatingBar
- 信号量与互斥锁
- 45、Java如何得到系统日期的前一天?
- JavaScript中的setInterval、clearInterval用法