zoukankan      html  css  js  c++  java
  • 一行代码让3D翻转后的文本恢复清晰

    FlashPlayer10提供的3D功能有一个相当蛋疼的问题:只要设置过rotationX、rotationY或者rotationZ属性,显示对象里面的文字(尤其是设备字体,位图文本)就会一直处于模糊状态,即使强制将它们重置为0也无济于事。

    除了3D旋转以外,有时2D旋转也会使用其它属性。因为在Flash里面,用rotation来旋转会导致设备字体不可见,需要绘制成位图才能正常旋转。在实际应用中,此法可能会给某些需求的实现带来不便,所以后来有大神(这位大神好像是Flash023)告诉我们用rotationZ代替rotation即可解决问题。此法比绘制成位图要方便多了,但由于设置过3D的旋转属性,所以文字还是难逃变模糊的命运。

    历史上有不少能人志士都在努力寻求解决此问题的有效方法。最早看到的一个方法是创建两个显示对象,一个用于3D旋转,而另一个不作任何3D变换,只在不旋转的时候显示,以确保非旋转状态下呈现出最清晰的文字。这时候,如果显示对象的内容比较复杂,那么同步它们的状态将是一件相当痛苦的事情。

    只要在旋转结束后执行以下这句:

    显示对象.transform.matrix3D = null;

    文本就能恢复原有的清晰状态,是不是很方便呢?

    ***-------------* 源文件 *---------------***

    /**
    rotate2D_mc---文本元件实例
    rotate3D_mt---文本元件实例
    rotate_btn----按钮实例
    */
    
    var currentRotation:Number = 0;
    
    var rotate2D_mt:Matrix = rotate2D_mc.transform.matrix;
    var rotate3D_mt:Matrix = rotate3D_mc.transform.matrix;
    
    rotate_btn.addEventListener(MouseEvent.CLICK, rotateClickHandler);
    
    function rotateClickHandler(event:MouseEvent):void
    {
    	rotate_btn.visible= false;
    	addEventListener(Event.ENTER_FRAME, enterFrameHandler);
    }
    
    function enterFrameHandler(event:Event):void
    {
    	currentRotation -= 0.2 * (currentRotation - 360);
    	rotate2D_mc.rotationZ = currentRotation;
    	rotate3D_mc.rotationY = currentRotation;
    	if(Math.abs(currentRotation - 360) < 1)
    	{
    		currentRotation = 0;
    		removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
    		rotate_btn.visible= true;
    		
    		//旋转结束后执行这句:显示对象.transform.matrix3D = null;文本就能恢复原有的清晰状态。
    		rotate2D_mc.transform.matrix3D = rotate3D_mc.transform.matrix3D = null;
    		
    		rotate2D_mc.transform.matrix = rotate2D_mt;
    		rotate3D_mc.transform.matrix = rotate3D_mt;
    	}
    	
    }
    

      

  • 相关阅读:
    Logback的配置说明
    BAT批处理修改MSDOS窗口标题、大小、字体及背景颜色
    Java修饰符public,private,protected及默认的区别
    Class loading problem regarding ear's lib directory
    MySQL开发规范
    学习如何用自己的 appender 来扩展 log4j 框架
    指令重排、内存屏障概念解析
    高性能线程间队列 DISRUPTOR 简介
    Log4j2的性能为什么这么好?
    java多线程
  • 原文地址:https://www.cnblogs.com/fengziwu/p/10914767.html
Copyright © 2011-2022 走看看