chrome之view之animate

2024-04-16 13:08
文章标签 view chrome animate

本文主要是介绍chrome之view之animate,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

chrome的动画机制

 

动画首先需要创建一个容器,负责时间调度,这里是AnimationContainer

这个类里面使用的是base::RepeatingTimer来开设置settimer,然后回调

到run()

timer_.Start(min_timer_interval_, this, &AnimationContainer::Run);

run()

{

  Elements elements = elements_;

 

    for(Elements::const_iterator i=elements.begin(); i!=elements.end(); ++i)

    {

        // 确保元素是合法的.

        if(elements_.find(*i) != elements_.end())

        {

            (*i)->Step(current_time);

        }

    }

run里循环调用所有的元素,并调用他们的step方法,

(*i)->Step(current_time);

这些element就是具体的动画对象了,比如LinearAnimation,multiAnimation之类的

这里会根据消耗的时间占总时间的比例来设置state_,设置了以后再调用

   delegate()->AnimationProgressed(this);来执行具体的绘画动作

一个流程就完成了

 

实例来个

首先一个类,需要继承animate::deletegate才有了可以接受>AnimationProgressed的能力

然后呢,这个类需要设置一个AnimationContainer,new也好,使用现成的也好

有了时间管理的类,还需要创建出具体的动画行为,比如SlideAnimation,这个类需要设置container

然后就可以调用animation的show->start->container.start->timer.settimer了

container.start的时候会将这个animation加到elements里面

然后时间到了,就会ontimer->container.run->element.step->delegate.>AnimationProgressed

 

 

还是不习惯c++的这种写法,一点功能需要这么多类,还需要这么多的组合,你套我,我套你,感觉很乱

但是这是google的代码,应该是高水准的了

  deletgate包含container,还包含里具体的animation,然后container和animation也是互相拥有,执行过程也是

一大堆栈调用,实际运行发现这个动画也是比较占用资源的

 

这篇关于chrome之view之animate的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/908873

相关文章

zeroclipboard 粘贴板的应用示例, 兼容 Chrome、IE等多浏览器

zeroclipboard单个复制按钮和多个复制按钮的实现方法 最近网站改版想让复制代码功能在多个浏览器上都可以实现,最近看网上不少说我们的代码复制功能不好用的,我们最近将会增加代码高亮等功能,希望大家多多支持我们 zeroclipboard是一个跨浏览器的库类 它利用 Flash 进行复制,所以只要浏览器装有 Flash 就可以运行,而且比 IE 的

MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)

1、MVC MVC(Model-View-Controller) 是一种常用的架构模式,用于分离应用程序的逻辑、数据和展示。它通过三个核心组件(模型、视图和控制器)将应用程序的业务逻辑与用户界面隔离,促进代码的可维护性、可扩展性和模块化。在 MVC 模式中,各组件可以与多种设计模式结合使用,以增强灵活性和可维护性。以下是 MVC 各组件与常见设计模式的关系和作用: 1. Model(模型)

MFC中App,Doc,MainFrame,View各指针的互相获取

纸上得来终觉浅,为了熟悉获取方法,我建了个SDI。 首先说明这四个类的执行顺序是App->Doc->Main->View 另外添加CDialog类获得各个指针的方法。 多文档的获取有点小区别,有时间也总结一下。 //  App void CSDIApp::OnApp() {      //  App      //  Doc     CDocument *pD

Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.B

一个bug日志 FATAL EXCEPTION: main03-25 14:24:07.724: E/AndroidRuntime(4135): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.syyx.jingubang.ky/com.anguotech.android.activity.Init

自定义view中常用到哪些方法作用分别是什么

目录 构造函数onMeasure(int widthMeasureSpec, int heightMeasureSpec)onDraw(Canvas canvas)onLayout(boolean changed, int left, int top, int right, int bottom)onTouchEvent(MotionEvent event)onSizeChanged(int

android 动画 ——视图动画(View Animation)

android动画分为视图动画(View Animation)、属性动画(Property Animation) 想看属性动画(Property Animation):请移步至http://blog.csdn.net/u013424496/article/details/51700312 这里我们来说下视图动画(View Animation)的纯代码写法,还有一种是xml调用, 对于xml调

Android 自定义View控件,实现跟随手指触摸移动的小球

Android UI组件是通过继承View类,然后绘制内容,比如ImageView,TextView等组件都是继承View类。 当Android系统提供的组件功能不能满足需求时,可以通过继承View类重写一个或多个方法,派生自定义的组件,View类常用重写方法: 1.构造器:View子类最基本的重写方法 protected voidonDraw(Canvas canvas) public

Vue - 关于Router路由跳转时显示的animate.css动画

Vue - 关于Router路由跳转时显示的animate.css动画 在Vue中,操作路由跳转时页面是闪白的,没有动画效果,我们可以通过在router-view中设置transition,并搭配animate丰富的动画效果来美化路由跳转时的显示效果. 1.安装animate npm i -S animate.css 2.在main中引入animate.css import 'anim

delphi chrome cef3 控件学习笔记 (五)

一、模拟移动鼠标 //  SetCursorPos(StrToInt(Edit1.Text),StrToInt(Edit2.Text));  //相对屏幕位置   SetCursorPos(Self.Left+chrm1.Left+strtoint(Edit1.Text),Self.Top+chrm1.Top+strtoint(Edit2.Text));  //相对Chrm位置

delphi chrome cef3 控件学习笔记 (四)

一、遍历网页元素并点击js: 下面代码为找到淘宝宝贝页面,成交记录元素的代码: for(var i=0;i<document.getElementsByTagName("A").length;i++){var a;        var d=document.getElementsByTagName("A")[i];        var s=document.getElementsBy