如何制作window移动的动画效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何制作window移动的动画效果相关的知识,希望对你有一定的参考价值。

参考技术A 分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:

delphi,vc代码都可以

或思路,关键api

-----

不要

用循环生生的移动窗口的代码

如果有专门的api更好



解析:

在 VC 中可以使用 AnimateWidow函数 实现动画。该函数在Windows 98 后都支持,可以实现滚动 幻灯等效果。下面介绍使用方法:

(1)首先需要在工程里的StdAfx.h文件靠前位置加上如下定义

#undef WINVER

#define WINVER 0X500

那是因为在AnimateWidow函数的实现中有一个判断宏 需要将 WINVER定义到0x500

(2)接下来就可以使用该函数了

BOOL AnimateWindow(HWND hwnd,DWORD dwTime,DWORD dwFlags );

第一个参数指要显示出来的窗体句柄,第二个参数为显示所用的时间,第三个参数表示显示标记。

具体参数的取值可以到 MSDN 中查找,下面的可以做为参考

AW_SLIDE 使用滑动动画效果,缺省为滚动方式,该标志在设置AW_CENTER时将被忽略

AW_ACTIVATE 激活窗口,该标志不能和AW_HIDE一起使用

AW_BLEND 使用一种退色效果该标志只有在窗体为置顶窗体时才使用

AW_HIDE 隐藏窗体,默认为可见

AW_CENTER 当设置HIDE时从四周向中心,否则中心向四周

AW_HOR_POSITIVE 从左向右动画显示窗体

AW_HOR_NEGATIVE 从右向左动画显示窗体

AW_VER_POSITIVE 从上到下动画显示窗体

AW_VER_NEGATIVE 从下到上动画显示窗体 最后四个参数当同时使用CENTER时将被忽略

示例:

AnimateWindow(GetSafeHwnd(),1000,AW_CENTER); 从中间向外显示

AnimateWIndow(GetSafehwnd(),1000,AW_CENTER | AW_HIDE); 从外向中间隐藏.

如何制作简单的动画效果

【中文标题】如何制作简单的动画效果【英文标题】: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]);

【讨论】:

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

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

[每天进步一点点~] uni-app css 制作雷达扫描、波浪移动动画效果

QQ空间里如何用Flash来制作鼠标移动的漂亮效果?

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

如何制作简单的动画效果

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

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