小程序设置动画效果

小程序设置动画效果,第1张

        小程序和html页面有点不同,主要是使用js来实现动画效果,因为小程序自身有提供一种改孝察方式:wx.createAnimation(OBJECT),它创建一个动画实例 animation ,通过调用实例的方法来描述动画。最后通过动画实例的export方法导出动画数据传递给组件的animation属性,step()来停止动画,step() 表示一组动画完成。

我们主要用wx:createAnimation({})来设置一些参数,例如持续时间、延时、加载方式等,用export()来开启动画,在页面上调用animation=”{{动画名称}}”。具体步骤:

1)创建动画对象并设置有效参数==>wx:createAnimation({参核茄数:有效值})

2)创建一组动画,调用step()来表示一组动画的完成==>动画对象.动画效果.step()

3)在data中设置一个对象vip_animal(自己随意慎瞎命名),用该对象开启动画==>this.setData({vip_animal: animation.export()})

4)在页面上调用动画对象==>animation="{{vip_animal}}"

例子:淡入淡出动画效果(当淡入动画生效后1.5s,淡出动画开始生效)

在wxml上调用animation="{{vip_animal}}"来显示

如果需要设置循环效果。我们可以设置:(setAnimation为)

另一种方式:

在wxml上调用style="{{style_img}}"来显示

一般的 Windows Form 通常是运用各种控件来显示数据 然而如果您希望在窗体中加入特殊效果来凸显数据内容 那帆滚么图形与动画将是非常不错的选择 一般来说 我们会使用 Net Framework中 的 GDI+ 函式库来制作图形与动画效果 在 GDI+ 还没有推出之前 如果要产生二维的 向量图形 影像 以及印刷样式 必须使用旧版 *** 作系统中的GDI 新的 GDI+ 是 Windows XP 的一部份 除了加入新功能之外 还最佳化现有功能以便具体改进 GDI(也就是旧版 Windows 包含的绘图装置接口)的效能 程序范例 图表 图表 图表

我们的程序范例示范了三种动画效果 分别是 眨眼效果 d跳的球 以及文字闪烁 当程序执行时会自动展示第一种眨眼效果 如图表 到 所示 运用之前「如何利用程序代码动态存取组件信息」的技巧 将组件的 A *** FQName 属性值指派给窗体的 Text 属性 并将先前已经加入项目资源的四张图片名称指派给数组 之后就使用此数组来示范眨眼效果 程序代码撰写于窗体的Load事件处理例程中 如下所示

private void Blog_DemoForm _Load(object sender EventArgs e){ AssemblyInfoClass myAssembly = new AssemblyInfoClass() this Text = myAssembly A *** FQName 陪轿团// 指派数组成员  arrImages[ ] = Properties Resources Eye  arrImages[ ] = Properties Resources Eye  arrImages[ ] = Properties Resources Eye  arrImages[ ] = Properties Resources Eye } 图表 如果您要使用 Visual C# 来制作「关于」对话框 建议先使用Visual Studio 所提供的模板芦橘来产生关于对话框窗体 然后再自订窗体所要呈现的内容(如图表 所示) 在此 我们选择将组件的相关信息填入窗体对应的控件 请于「关于」对话框窗体的 Load 事件处理例程中撰写下列程序代码 private void AboutBox_Load(object sender EventArgs e){ AssemblyInfoClass myAssembly = new AssemblyInfoClass() labelProductName Text = 产品名称 + myAssembly Product labelVersion Text = 版本 + myAssembly Version labelCopyright Text = 版权宣告 + myAssembly Copyright labelCompanyName Text = 公司名称 + myAssembly Company textBoxDescription Text = 细部描述 +  myAssembly Description}

要显示「关于」对话框 请替「说明」菜单项目的Click事件处理例程中撰写下列程序代码

private void toolStripMenuItem _Click(object sender EventArgs e){ // 显示关于对话框  AboutBox MyAboutBox = new AboutBox() // 设定关于对话框的启始位置  MyAboutBox StartPosition = FormStartPosition CenterScreen MyAboutBox Show()}当用户点选不同的选项按钮时 将会执行下列程序代码来显示不同的动画效果 这些程序代码撰写于选项按钮的 CheckedChanged 事件处理函式中 如下所列 private void RadioButtons_CheckedChanged(object sender EventArgs e){ if(optWink Checked) {tmrAnimation Interval = WINK_TIMER_INTERVAL } else if(optBall Checked) {tmrAnimation Interval = BALL_TIMER_INTERVAL } else if(optText Checked) {tmrAnimation Interval = TEXT_TIMER_INTERVAL } OnResize(EventArgs Empty)}自订函式 RadioButtons_CheckedChanged 会叫用 OnResize 函式来产生不同的图形 请大家注意 我们系使用 Graphics 类别的 FillEllipse 方法来绘制球形 程序代码如下所列 protected override void OnResize(EventArgs ea){ if (optWink Checked) {Graphics grfx = CreateGraphics()// 重绘窗体 this Refresh() } else if (optBall Checked) {Graphics grfx = CreateGraphics()grfx Clear(BackColor)double dblRadius = Math Min(ClientSize Width / grfx DpiX ClientSize Height / grfx DpiY) / intBallSizeintBallRadiusX = (int)(dblRadius * grfx DpiX)intBallRadiusY = (int)(dblRadius * grfx DpiY)intBallMoveX = (int)(Math Max( intBallRadiusX / intMoveSize))intBallMoveY = (int)(Math Max( intBallRadiusY / intMoveSize))intBitmapWidthMargin = intBallMoveXintBitmapHeightMargin = intBallMoveYintBallBitmapWidth = * (intBallRadiusX + intBitmapWidthMargin)intBallBitmapHeight = * (intBallRadiusY + intBitmapHeightMargin)bitmap = new Bitmap(intBallBitmapWidth intBallBitmapHeight)grfx = Graphics FromImage(bitmap)grfx Clear(BackColor)// 绘制球形 grfx FillEllipse(Brushes Red new Rectangle(intBallMoveX intBallMoveY * intBallRadiusX * intBallRadiusY))intBallPositionX = (int)(ClientSize Width / )intBallPositionY = (int)(ClientSize Height / ) } else if (optText Checked) {Graphics grfx = CreateGraphics()grfx Clear(BackColor) }}

最后 利用定时器将图形连续重绘于窗体上 便产生了动画效果 程序代码撰写于定时器的 Tick 事件处理例程中 如下所示

private void tmrAnimation_Tick(object sender EventArgs e){ // 眨眼效果  if(optWink Checked) {Graphics grfx = CreateGraphics()// 将数组中之图形绘制在画面上 grfx DrawImage(arrImages[intCurrentImage] (int)((ClientSize Width arrImages[intCurrentImage] Width) / ) (int)((ClientSize Height arrImages[intCurrentImage] Height) / ) arrImages[intCurrentImage] Width arrImages[intCurrentImage] Height)intCurrentImage += jif(intCurrentImage == ){ j = }else if(intCurrentImage == ){ j = } } else if(optBall Checked) // d跳的球  {Graphics grfx = CreateGraphics()// 将球绘制在画面上 grfx DrawImage(bitmap (int)(intBallPositionX intBallBitmapWidth / ) (int)(intBallPositionY intBallBitmapHeight / ) intBallBitmapWidth intBallBitmapHeight)// 移动球的位置 intBallPositionX += intBallMoveXintBallPositionY += intBallMoveY// 球碰到左右边界 if(intBallPositionX + intBallRadiusX >= ClientSize Width || intBallPositionX intBallRadiusX <= ){ intBallMoveX = intBallMoveX SystemSounds Beep Play()}// 球碰到上下边界 if(intBallPositionY + intBallRadiusY >= ClientSize Height || intBallPositionY intBallRadiusY <= ){ intBallMoveY = intBallMoveY SystemSounds Beep Play()} } else if (optText Checked) // 闪动文字  {Graphics grfx = CreateGraphics()// 设定文字的字型与大小 Font font = new Font( Microsoft Sans Serif FontStyle Bold GraphicsUnit Point)// 设定要显示的文字 string strText = 章立民研究室 SizeF sizfText = new SizeF(grfx MeasureString(strText font))// X坐标与Y坐标的配对 PointF ptfTextStart = new PointF((float)(ClientSize Width sizfText Width) / (float)(ClientSize Height sizfText Height) / )PointF ptfGradientStart = new PointF( )PointF ptfGradientEnd = new PointF(intCurrentGradientShift )// 设定笔刷 LinearGradientBrush grBrush = new LinearGradientBrush(ptfGradientStart ptfGradientEnd Color Blue BackColor)// 将文字绘制在画面上 grfx DrawString(strText font grBrush ptfTextStart)// 以不同的坐标绘制文字 造成闪动效果 intCurrentGradientShift += intGradiantStepif (intCurrentGradientShift == ){ intGradiantStep = }else if (intCurrentGradientShift == ){ intGradiantStep = } }} lishixinzhi/Article/program/net/201311/13166


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12505047.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存