iloveas 发表于 2018-12-14 10:46:22

【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

wgq341 发表于 2018-12-14 11:50:07

继续学习!

SUPERSEIYA 发表于 2018-12-14 14:32:20

牛逼!真厉害啊

Jason桃 发表于 2019-1-10 13:56:00

学习学习

363995287 发表于 2019-2-25 09:25:15

很强势~~~

ylw 发表于 2019-3-12 22:32:00

一行代码!

ant 发表于 2019-3-19 08:53:40

学习 学习 学习{:1_119:}

sunarm_jk 发表于 2019-9-2 10:01:19

这么好的帖子才看到

Kona 发表于 2020-4-24 22:35:12


牛逼!真厉害啊

心羽 发表于 2020-5-5 10:06:27

{:1_88:}{:1_88:}{:1_88:}
页: [1] 2
查看完整版本: 【9RIA—iloveas】— AS3游戏实用技巧(7):一行代码让3D翻转后的文本恢复清晰

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)