zoukankan      html  css  js  c++  java
  • Matrix的set,pre,post调用顺序

    Matrix调用一系列set,pre,post方法时,可视为将这些方法插入到一个队列.当然,按照队列中从头至尾的顺序调用执行.
    其中pre表示在队头插入一个方法,post表示在队尾插入一个方法.而set表示把当前队列清空,并且总是位于队列的最中间位置.当执行了一次set后:pre方法总是插入到set前部的队列的最前面,post方法总是插入到set后部的队列的最后面

    例一:
    Matrix m = new Matrix();
    m.setRotate(45); 
    m.setTranslate(80, 80);
    只有m.setTranslate(80, 80)有效,因为m.setRotate(45);被清除.

    例子二:
    Matrix m = new Matrix();
    m.setTranslate(80, 80);
    m.postRotate(45);
    先执行m.setTranslate(80, 80);后执行m.postRotate(45);

    例子三:
    Matrix m = new Matrix();
    m.setTranslate(80, 80);
    m.preRotate(45);
    先执行m.setTranslate(80, 80);后执行m.preRotate(45);

    例子四:
    Matrix m = new Matrix();
    m.preScale(2f,2f);    
    m.preTranslate(50f, 20f);   
    m.postScale(0.2f, 0.5f);    
    m.postTranslate(20f, 20f);  
    执行顺序:m.preTranslate(50f, 20f)-->m.preScale(2f,2f)-->m.postScale(0.2f, 0.5f)-->m.postTranslate(20f, 20f)
    注意:m.preTranslate(50f, 20f)比m.preScale(2f,2f)先执行,因为它查到了队列的最前端.

    例子五:
    Matrix m = new Matrix();
    m.postTranslate(20, 20);   
    m.preScale(0.2f, 0.5f);
    m.setScale(0.8f, 0.8f);   
    m.postScale(3f, 3f);
    m.preTranslate(0.5f, 0.5f);
    执行顺序:m.preTranslate(0.5f, 0.5f)-->m.setScale(0.8f, 0.8f)-->m.postScale(3f, 3f)
    注意:m.setScale(0.8f, 0.8f)清除了前面的m.postTranslate(20, 20)和m.preScale(0.2f, 0.5f);  

  • 相关阅读:
    Java web 会话技术 cookie与session
    Spring bean的bean的三种实例化方式
    Spring基础篇——通过Java注解和XML配置装配bean(转载)
    Spring的核心api和两种实例化方式
    Spring 7种事务传播类型
    leetcode 697
    leetcode 387
    Spring_002 依赖注入方式实现
    Spring_第一个Spring入门案例IOC
    谈谈对Spring IOC的理解(转载)
  • 原文地址:https://www.cnblogs.com/exmyth/p/4967356.html
Copyright © 2011-2022 走看看