如何制作简单的动画效果

Posted

技术标签:

【中文标题】如何制作简单的动画效果【英文标题】:How to create a simple animation effect 【发布时间】:2015-06-01 09:49:30 【问题描述】:

是否有可用的代码示例说明如何在 react-native 应用程序中使用 JPG 进行 2D 变换(例如旋转和缩放),也许以教程中的代码为起点?

如果可能,查看以下两种情况的代码会有所帮助: 1) automatically apply a transform when the app is launched 2) apply a transform after different types of user gestures

在未来的某个时候,看看如何创建 3D 变换和动画效果会很有趣。

【问题讨论】:

React Native 动画 API 已经落地。查看黑客新闻的链接! news.ycombinator.com/item?id=9872996 【参考方案1】:

更新:您可以在我的示例应用程序中查看整个示例:https://github.com/grgur/react-native-memory-game

Animation 现在是 AnimationExperimental,所以我们需要修改 zvona 的解决方案。

首先,确保RCTAnimationExperimental 是一个链接库

如果没有,请按照以下步骤操作:

    导航到node_modules/react-native/Libraries/Animation/RCTAnimationExperimental.xcodeproj 拖放到库(应如上图所示) 点击你的项目名称(在上面的例子中,我的项目名称是Memory) 切换到构建阶段选项卡 展开Libraries/RCTAnimationExperimental.xcodeproj/ProductslibRctAnimationExperimental.a 拖到Link Binary With Libraries

好的,最困难的部分现在结束了。转到您的 javascript 文件。动画不再是 react-native 包的一部分,所以我们必须明确地包含它。

var React = require('react-native');
var AnimationExperimental = require('AnimationExperimental');

好的,冠军,你准备好制作动画了。确保你知道你在制作什么动画。您将制作动画的视图称为node

AnimationExperimental.startAnimation(
  node: this.refs.image,
  duration: 400,
  easing: 'easeInQuad',
  property: 'opacity',
  toValue: 0.1,
);

就是这样!

在撰写本文时,可用属性为:opacitypositionpositionXpositionYrotationscaleXY

【讨论】:

添加 RCTAnimation 库,路径应该是 node_modules/react-native/Libraries/**NativeAnimation**/ 对于 RN 0.38【参考方案2】:

目前,这是一个更复杂的过程,我正计划就此写一篇博文。不过,作为一个简短的开始,我在这里写一些东西。

第一个问题是 RCTAnimation / RCTAnimationManager 根本不存在,如果您使用 react-native init [ProjectName] (https://github.com/facebook/react-native/issues/226) 创建项目。

您需要从左上角的加号将其添加到 XCode:“将文件添加到 [ProjectName]”。然后导航到node_modules > Libraries > Animation > RCTAnimation.xcodeproj。导入后,需要在项目中将其拖到Libraries下。

然后你需要打开标签Build Phases。那里有菜单Link Binary With Libraries (x items)。从名为libRCTAnimation.aRCTAnimation.xcodeproj 文件下的Products 拖动到菜单。

现在,您可以构建项目以支持动画。我对 XCode 不是很熟悉,所以可能有一种更简单的方法来实现这一点,但我是这样排序的。

第二个问题是并非所有可用(或计划)的功能都在那里。至少我在屏幕上看到任何东西之前经历了反复试验的丛林。

尝试例如这段代码首先是为了充分证明动画是有效的:

var 
  Animation,
  AppRegistry,
  StyleSheet,
  Text,
  View
 = React;

var styles = StyleSheet.create(
  test: 
    width: 400,
    height: 400,
    backgroundColor: 'blue',
    opacity: 0
  
);

var AnimationTest = React.createClass(
  componentDidMount () 
    Animation.startAnimation(this.refs['this'], 400, 0, 'linear', opacity: 1);
  ,

  render () 
    return (
      <View ref='this' style=styles.test>
        <Text>Just an animation test</Text>
      </View>
    )
  
);

AppRegistry.registerComponent('AnimationTest', () => AnimationTest);

这应该会让你继续前进。如果您需要任何进一步的帮助,请通知我。

如果我成功地以博客文章的形式编写了更完整的说明,我会将其更新为这个答案。

【讨论】:

非常好。它对我来说真的很顺利。感谢您的明确解释。 谢谢。作为一个 Xcode 新手,我错误地打开了错误的 Build Phases 选项卡......你想将 libRCTAnimation.a 放在你的 MainProject.xcodeproj 不会再工作了。用 API 略有不同的 AnimationExperimental 替换 从 react-native 0.38 开始,RCTAnimation.xcodeproj 生活在@node_modules/react-native/Libraries/NativeAnimation/。【参考方案3】:

查看 2048 演示应用程序,了解 RCTAnimation 库的使用示例:

https://github.com/facebook/react-native/tree/master/Examples/2048

它不使用任何特别复杂的变换,但会为各种元素的positionopacityscaleXY 设置动画,代码如下所示:

Animation.startAnimation(this.refs['this'], 300, 0, 'easeInOutQuad', scaleXY: [1, 1]);

【讨论】:

感谢您指出示例 - 我完全错过了这些!

以上是关于如何制作简单的动画效果的主要内容,如果未能解决你的问题,请参考以下文章

CSS3简单动画效果与使用列表制作菜单

PPT技巧操作:PPT如何制作三维立体图形

教你如何在网页上用利用H5快速实现动画效果

iPhone开发中如何制作这种动画效果? Quartz 2d,Vore 动画?

39 制作一个显示隐藏的切换动画效果

利用CSS3制作淡入淡出动画效果