Ⅰ 前端基本功:js(十一)动画封装(CSS样式获取、JSON遍历)
盒子 原来的位置 0 + 10 盒子现在的offsetLeft 10
|-5| = 5
这三个函数都是 数学函数
Math
比如说 console.log(Math.ceil(1.01)) 结果 是 2
console.log(Math.ceil(1.9)) 结果 2
console.log(Math.ceil(-1.3)) 结果 是 -1
比如说 console.log(Math.floor(1.01)) 结果 是 1
console.log(Math.floor(1.9)) 结果 1
console.log(Math.floor(-1.3)) 结果 是 -2
console.log(Math.round(1.01)) 结果 是 1
console.log(Math.round(1.9)) 结果 是 2
匀速动画的原理: 盒子本身的位置 + 步长
缓动动画的原理: 盒子本身的位置 + 步长 (不断变化的)
( 缺陷:只能水平方向!随后的“封装运动框架单个属性会进一步改进” )
我们访问得到css 属性,比较常用的有两种:
点语法可以得到 width 属性 和 top属性 ** 带有单位的 。 100px
但是这个语法有非常大的 缺陷**, 不变的。
后面的width 和 top 没有办法传递参数的。
var w = width;
box.style.w
最大的优点 : 可以给属性传递参数
我们想要获得css 的样式, box.style.left 和 box.style.backgorundColor
但是它只能得到 行内的样式。
但是我们工作最多用的是 内嵌式 或者 外链式 。
怎么办?
核心: 我们怎么才能得到内嵌或者外链的样式呢?
外部(使用<link>)和内嵌(使用<style>)样式表中的样式(ie和opera)
两个选项是必须的, 没有伪类 用 null 替代
我们这个元素里面的属性很多, left top width ===
我们想要某个属性, 就应该 返回该属性,所有继续封装 返回当前样式的 函数。
千万要记得 每个 的意思 : 那是相当重要
flag在js中一般作为开关,进行判断。
等动画执行完毕再去执行的函数 回调函数
我们怎么知道动画就执行完毕了呢?
很简单 当定时器停止了。 动画就结束了
案例源码:
in运算符也是一个二元运算符,但是对运算符左右两个操作数的要求比较严格。in运算符要求第1个(左边的)操作数必须是字符串类型或可以转换为字符串类型的其他类型,而第2个(右边的)操作数必须是数组或对象。只有第1个操作数的值是第2个操作数的属性名,才会返回true,否则返回false
案例源码:
链接: http://pan..com/s/1miEvqoo
Ⅱ Spine导出的三个文件中动画文件.json文件如何转成.skel文件
ui的话uilayer*
ul=uilayer::create();
addchild(ul);
uilayout*
widget=dynamic_cast
(guireader::sharereader()->widgetfromjsonfile("json路径迹闭"));
ul->addwidget(widget);
骨骼动画的话我是这样用的拦胡
用到的都是export这个文件夹下的东西
ccarmaturedatamanager::sharedarmaturedatamanager()->addarmaturefileinfo("export文件夹下的exportjson文件");
ccarmature*
armature=ccarmature::create("cocostudio的文件名字");
就用姿衡裂过这两个,希望对你有帮助。。
Ⅲ 请问ae怎么导json文件
在Adobe After Effects中,您可以使用Bodymovin插件来将动画导出为JSON文件,也可以使用LottieFiles插件来导入JSON文件。
以下是使用LottieFiles插件导入JSON文件的步骤:
首先,您需要从LottieFiles网站下载并安装LottieFiles插件。
打开After Effects,并帆薯从菜单栏选择“Window”>“Extensions”>“LottieFiles”。
在LottieFiles面板中,单击“Browse”按钮,选择要导败橘入的JSON文件。
确定您要导入的JSON文件的设置,例如渲染选项和大小。
单击“Import”按钮,将JSON文件导入到After Effects项目中。
请注意,导入JSON文件时,After Effects会自动创建一个合成,并将JSON文件中的图层转换为合成中的矢量形状图层。您可以使用After Effects中察轿团的其他工具和效果来编辑和调整这些图层。
希望这些步骤可以帮助您导入JSON文件到After Effects中。
Ⅳ starst动画倒出json没显示为什么
楼主是用animation编辑器导出的吧?
试试这样写:
ccs.ArmatureDataManager:getInstance():addArmatureFileInfo("MoveAnimation_1/MoveAnimation_1.ExportJson")
local armature = ccs.Armature:create("Animation0")
armature:getAnimation():playWithIndex(0)
Ⅳ cocos2d-x 3.2 lua 怎么导入cocostudio动画
Cocostudio目前的功能包括UI编辑器、动画编辑器、场景编辑器和数据编辑器。数据编辑器没有涉及到,就不说了。剩下三者中主要讲下导入UI编辑器的资源。
UI编辑器导出的文件包括一个.ExportJson文件,一个.plist文件和一个.png文件。Cocostudio中文官网中说的是TouchGroup,英文官网中是UILayer,可是都已经不存在了。UILayer变成了Layer,现在也可以不创建Layer,直接加到场景上面。所以代码可以这样:
Node *pNode = GUIReader::getInstance()->widgetFromJsonFile("test.ExportJson");
this->addChild(pNode);
下面就可以用getChildByTag来获取组件了。不过getChildByTag貌似只能按照树的结构一层层照下来,显得很麻烦,而且不能按照名字来取。所以,现在可以用ui中的Helper直接从树中获取组件,用name或者tag。但seekWidgetByTag和seekWidgetByName的第一个参数是Widget类型,需要将pNode转成Widget类型。(从.ExportJson文件可以看出来,pNode本来就是一个Widget类型的树)
Button *button = (Button*)(ui::Helper::seekWidgetByName(pNode, "button"));
顺便附上绑定事件监听的代码,使看到的人免去寻找之苦。
button->addTouchEventListener(CC_CALLBACK_2(MainScene::touchEvent, this));
touchEvent是自己写的方法。这个方法大致是如下用法,注意pSender和type的使用。
void SingleMenuScene::selectEvent(Ref *pSender, Widget::TouchEventType type)
{
switch(type)
{
case Widget::TouchEventType::ENDED:
GameSetting::Map map = GameSetting::Map::DEFAULT;
if(pSender == defaultBtn)
{
map = GameSetting::Map::DEFAULT;
}
else if(pSender == snowBtn)
{
map = GameSetting::Map::SNOW;
}
Scene *game = BattleScene::createScene(map);
TransitionScene *transition = TransitionFade::create(0.5, game);
Director::getInstance()->replaceScene(transition);
}
}
导入动画编辑器的动画的代码如下:
CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfo("Animation0.png","Animation0.plist","Animation.ExportJson");
CCArmature *armature = CCArmature::create("Animation");
armature->getAnimation()->playByIndex(0);
armature->setScale(0.5f);
armature->setPosition(ccp(visibleSize.width * 0.5, visibleSize.height * 0.5));
this->addChild(armature);
导入场景编辑器的场景的代码如下:
Node* pNode = SceneReader::getInstance()->createNodeWithSceneFile("scene.ExportJson");
this->addChild(pNode);
这个读出的Node貌似不能转成Widget,因为它不仅包括UI组件还有动画等资源。获取组件和绑定事件监听可以这样写:
ComRender *render = (ComRender*)(pNode->getChildByTag(10010)->getComponent("GUIComponent"));
Widget *widget = (Widget*)(render->getNode());
widget->addTouchEventListener(CC_CALLBACK_2(MainScene::touchEvent, this));
Ⅵ creator 可以用studio导出的.ExportJson动画文件吗
无法直接用。你可以用studio 2 creator转化插件,直接把studio工程转到creator里面。
Creator相关问题,请移步 f s.com提问 无法直接用。你可以用studio 2 creator转化渗空插件,直接丛穗瞎把studio工程转到creator里面。
Creator相关问题族漏,请移步 f s.com提问
Ⅶ 如何使用 Cocos Studio 场景编辑器制作《魔卡幻想》主界面
内容列表
1 cocostudio 场景编辑器
2 使用 cocostudio 完成《魔卡幻想》场景编辑
2.1 UI 编辑器制作游戏主界面
2.2 建立关键帧动画
2.3 场景编辑器的 资源“整合”
3 在 cocos2d-x 中加载场景资源 并运行之
3.1 加载场景内容
3.2 在场景中播放动画
3.3 对场景的一些编码说明
1.cocostudio 场景编辑器
前面的文章 《使用 cocostudio 创建 cocos2d-x 序列帧和骨骼动画》《如何使用 cocostudio UI 编辑器实现《乱斗堂》设置界面》,其中介绍了如何使用动画编辑器创建动画与使用 UI 编辑器创建游戏配置界面,而本文将集两者之大成,使用 cocostudio 场景编辑器来创建游戏场景,其中包含游戏 UI 与动画,来定制一个游戏主界面。
2.使用 cocostudio 完成《魔卡幻想》场景编辑
对于环境的搭建使用,请参考之前的文章,或者实时关注 官方 最新版本的安装使用方法。
2.1 UI 编辑器搏侍制作游戏主界面
a.创建项目(项目名称:MysticalCard),并导入项目 UI 资源,添加 一图片框设定背景图片。注意在工具拦设置 “画布” 的大小(如果需要),这将决定着你的设计分辨率,在运行时还需要注意屏幕的适配问题,如放大缩小,位置偏移等,视具体情况而定。
b.为界面添加 UI 元素,图片框等,请根据自己的需要定制.
c.实践过程中的注意事项
添加控件时注意必要的属性设置
控件的命名规范,这有助于我们今后在后台编写代码获取界面元素
可交互的控件的 “可交互属性” 开启
2.2 建立关键帧动画
除了主界面一些必要的 UI 控件,我们还需要一个 “对话框指示” 的动画效果。这是一个帧动画。
a.准备工作。
打开 CocoStudio ,启动 动画编辑器
创建一个新的项目,后导入资源(在 “资源窗口” 中,点击 “文件” 或者 “文件夹” 标示,添加需要的素材资源)
在 “资源窗口中” 点击关键帧动画的守帧图片,拖动至 “渲染窗口”
如下图所示:
b.将第一关键帧拖动至 “渲染窗口” 中心。 可以使用工具栏,快速定位至窗口中心,使图片显示在正中间,可以让动画更好的定位。
c.添加其它帧图片,注意,我们需要选中剩余图片,然后 “拖动” 到 “对象结构” 视图中的 “第一关键帧” 所在的对象,如下图所示。
关键帧 与 骨骼动画操作区别:在使用骨骼动画的时候,我兄银培们将骨骼中的各部分元素,直接拖动添加到 “渲染窗口”,以摆放各骨骼的位置关系,而在 “对象结构” 视图中则表现为,一个列表,标示着每一e.块骨骼对象,不同帧所改变的是各个骨骼对象的位置,以达到骨骼动画效果。
而在关键帧动画中,它的对象结构只有一个,而在每一帧修改的不是其位置,而是其显示内容。这是羡唯两者之间的区别,那操作方式也有所不同。而对于它们所导出的 资源 则是相同,用法也是同样。
d.剩余帧添加之后,我们看见在 “关键帧” 视图中,已经有了多帧动画,可以播放动画,查看效果,并可以通过修改 “速率” 来控制动画的播放速度。
导出动画资源,导出的资源文件可以被我们在 Cocos2d-x 中以代码的方式直接加载,然后播放其动画,也可以作为 场景编辑器中的一个元素,被添加在场景编辑器里,后面的内容就是使用 场景编辑器来加载一个动画的方式。
2.3 场景编辑器的 资源“整合”
使用 CocoStudio 可以很好的帮助游戏开发过程中 分工合作。动画编辑器 和 UI 编辑器可以由多个人进行编辑,最后再由一个人统合资源,这也就是场景编辑器的优点了,它除了能支持 CocoStudio 本身所自带的动画编辑器,UI 编辑器,它还能支持,Tmx 地图资源,粒子编辑器的粒子效果资源,声音资源等~并且不断扩展中。
以下将给出如何在 场景编辑器整合我们之前所创建的动画与 UI 界面的资源,来实现我们一个场景的运行效果。它的步骤如下:
a.启动场景编辑器,新建一个场景项目。并设置 “画布” 大小。画布大小要适量。
b.我们拖动一个 UI 控件到画布之上,它作为我们之前导出的 UI 资源的承载。
c.我们将之前的 UI 编辑器所导出的资源,导入到当前场景项目中来,导入方式与 UI 编辑器导入资源方式同样,如下图:.
d.为 UI 控件的 “文件” 属性赋值:我们在资源视图中找到 UI 编辑器所导出的 UI 资源,其目录下包含 json 文件资源(如这里的 “MysticalCard_1.json”),将其拖动到 UI 控件的文件 属性中去,如下图所示:
e.前面的步骤已经将 UI 资源导入场景之内,现在需要添加之前所创建的动画资源。
我们以相同的方式导入动画编辑器所导出的动画资源文件。
拖动一个骨骼控件至场景界面,如下图所示。
为骨骼控件的 “文件” 属性赋值,其值为 动画资源中的 ExportJson(或者 json 文件,这取决于动画资源的导出方式) 文件。
f.运行效果:当我们建立好场景之后,可以通过工具栏运行按钮,点击查看效果,这意味着你不用将所有的资源文件,手动以代码的方式添加到 Cocos2d-x 中,便能看到效果。
在运行效果中,所有的控件都是可操作的,如下图,但这里只有点击效果,如果需要实现其逻辑,那么现在需要将其加载到 Cocos2d-x 项目中,编写后台代码实现。
3.在 Cocos2d-x 中加载场景资源 并运行之
3.1 加载场景内容
前面那么多步骤,使用 CocoStudio 来创建了 UI,动画,还有一个场景,而要将其运行在实际的项目中,就非常的简单与方便了,只需几行代码,就能够将其加载到项目中去,当然在这之前我们需要将场景编辑器的资源(场景项目目录中 “Resources” 目录,其中将包含一个 json 文件)复制到项目资源目录中去:
// 加载场景资源
CCNode *pNode = CCJsonReader::sharedJsonReader()->createNodeWithJsonFile(“McScene.json”);
this->addChild(pNode);
通过 CCJsonReader 来读取解析 json,从而获得场景中的节点内容,直接添加到当前的场景就能运行。
3.2 在场景中播放动画
默认加载的场景资源 动画 组件是没有播放的,需要手动获取动画组件对象,然后调用其播放方法,当然这个步骤也是非常简单的:
// pNode 为 之前所获取的场景资源根节点,通过此节点获取到动画对象,获取方式根据在场景编辑其中设置的层次关系而定
CCComRender *pLoadRender = (CCComRender*)(pNode->getChildByTag(1)->getChildByTag(1)->getComponent(“CCArmature”));
CCArmature* armLoad = (CCArmature*)(pLoadRender->getRender());
armLoad->getAnimation()->playByIndex(0);
3.3 对场景的一些编码说明
使用 CocoStudio 就是为了帮助我们快速的建立 UI 原型,然后通过编码可以获取到里面的任意一个元素对象,并修改其属性值,调用其方法,正如上面所示播放一个动画的方法同样。其步骤如下:
通过 CCJsonReader 类读取 json 文件,将会自动解析构建对象,返回一个节点 CCNode
任何元素都能通过这个 CCNode 节点,获取到,它其实就是一个树,所不同的是层级关系(树节点的位置)
找到需要对象所在的 “树枝”,后通过 getComponent 方法获取 所在的 CCComRender 对象
通过 CCComRender 的 getRender 方法获取最终对象
得到我们所需要的具体对象之后,我们就能够对齐进行草,设置属性,调用方法等,诸如此类
转载,仅供参考,祝你愉快,满意请采纳。
Ⅷ wpf加载.json动画
1、安装LottieSharp包
Install-Package LottieSharp -Version 1.1.3
image-20221124224712998
Tips:1.1.3需要简闷宏拦册.NETFramework4.6.1环境,1.1.3以上需要.NET6以上环境
2、准备Lottie动画文件
image-20221124224736054
文末附Lottie下载网站,或自行寻求设计师帮助
3、XAML编写
<lottie:LottieAnimationView
x:Name="PART_Lottie"
HorizontalAlignment="Center"
VerticalAlignment="Center"
AutoPlay="True"
FileName="{Binding CurrentFile}" />
4、播放罩扒动画
在控件上设置AutoPlay为True可自动播放,也可手动在后台代码中使用PlayAnimation()播放,后台操作播放需要通过控件去访问方法。
Ⅸ cocos creator 怎么加加载json动画
:一、首先去下载JsonCpp这个吵誉贺库。 解压后,找到include的文件夹。将它们升派复制到2dx工程的libs目录,然后加入到工程中。 你可以使用jsoncpp这个库了,在使用的地方引用头文件json.h就可以了。虚闹
Ⅹ Bodymovin导出Json文件避坑指南
一、放入AE中的图层最好是图片格式,如果是AI或者PSD格式图层,在mac系统会出现勾选了“卖扒保留图片名称”选项,但是无法输出image文件夹,演示的html会出现图片丢失
如若不勾选“保留图片名称”选项,插件导出的图片资源会自动命名为img_0至img_N,而如果产品中之前有同样的动效图片素材,放入该动效后,资源会覆盖。
所以,我们在AE文件中的图层需要全英文命名,且如若是在mac系统上,AE中的图层最好是图片。如果是AI或是PSD格式,需要手动将图层创建为形状,但是创建形状后图层颜色丢失,需要重新设置颜色。
故mac系统上建议使用图片作为图层。
(经验证,windows系统不存在这个问题,不管是AI图层还是PSD图层,勾选“保留图片名称”选项,导出.ai或是.PSD格式的资源,只要Json和素材能对应上,在开发实现上就没有问题)。
二、小程序实现APP端的动效,同样可使用Lottie库,使用bodymovin插件导出Json格式,值得注意的地方:资源在插件输出时要转化成base64格式,否则无法在小程序引入图片。
这样输出的文件会没有了image文件夹,图片资源一并存到了Json中,Json体积多大,动画在小程序的体积就是多大。
一个小细节是:压缩图片选项不管设置高还是低,Json的体积不会有太大的变化,所以保持早禅默认80就OK。
三、Lottie库AE特性支持要点:形状、填充、基本属性变换可支持,蒙版部分效果不支持,考虑到多平台兼容,动画要求简单,输出陆配尘时简化帧数
Lottie支持的AE特性列表官方文档:https://airbnb.io/lottie/#/supported-features