【9RIA—iloveas】— AS3游戏实用技巧(7):一行代码让3D翻转后的文本恢复清晰
本帖最后由 TKCB 于 2019-3-19 09:09 编辑转载:9RIA游戏开发者社区(天地会)
作者:iloveas(大神)
总目录:[原创]AS3游戏开发实用技巧汇总
FlashPlayer10提供的3D功能有一个相当蛋疼的问题:只要设置过rotationX、rotationY或者rotationZ属性,显示对象里面的文字(尤其是设备字体,位图文本)就会一直处于模糊状态,即使强制将它们重置为0也无济于事。
除了3D旋转以外,有时2D旋转也会使用其它属性。因为在Flash里面,用rotation来旋转会导致设备字体不可见,需要绘制成位图才能正常旋转。在实际应用中,此法可能会给某些需求的实现带来不便,所以后来有大神(这位大神好像是Flash023)告诉我们用rotationZ代替rotation即可解决问题。此法比绘制成位图要方便多了,但由于设置过3D的旋转属性,所以文字还是难逃变模糊的命运。
这一问题在卡牌游戏或者翻牌抽奖模块中较为常见,现在我就上个swf来演示一下:
attach://1745.swf
看到了没,这个蛋疼的模糊效果可谓大煞风景啊。如果能彻底恢复旋转前的状态那该多好。
历史上有不少能人志士都在努力寻求解决此问题的有效方法。最早看到的一个方法是创建两个显示对象,一个用于3D旋转,而另一个不作任何3D变换,只在不旋转的时候显示,以确保非旋转状态下呈现出最清晰的文字。这时候,如果显示对象的内容比较复杂,那么同步它们的状态将是一件相当痛苦的事情。
之所以搞的这么麻烦,大概是因为当时大家都一致认为3D变换是个不可逆的操作,所以只能通过2D副本来维持状态。为此iloveas表示灰常内疚,如果当年能早点上来9ria的话,也许大家就能少走一些弯路。不过亡羊补牢为时未晚,现在既然来了,我就告诉大家,这一操作完全可逆,而且也是一行代码的事,只要在旋转结束后执行以下这句:
**** Hidden Message *****
文本就能恢复原有的清晰状态,是不是很方便呢?
我设置了回复可见,如果你想看隐藏内容但又不想回复的话,就可以把上面的swf抓取下来,然后用反编译的方式查看里面的代码。当然了,相比之下还是回复本帖要方便一些,而且回复以后还能直接下到源文件:
**** Hidden Message *****
最后,iloveas偷偷告诉大家,其实Flash023后来也在问答求助区多次提到过这方法,所以不能算是我的原创,但我还是不要脸地放上来骗回复了(至少我还恢复了原有的2D变换,023的回答里还没提到过),哈哈~~
TKCB:
我也做了一个练习文件,用于理解这个问题。
http://www.11ria.com/forum.php?mod=viewthread&tid=1594
继续学习! 牛逼!真厉害啊 学习学习
很强势~~~ 一行代码! 学习 学习 学习{:1_119:} 这么好的帖子才看到
牛逼!真厉害啊 {:1_88:}{:1_88:}{:1_88:}
页:
[1]
2