解决state全屏的问题还不是那么想当然滴

解决state全屏的问题还不是那么想当然滴

跳转state后,一般在state的enterState写个监听函数执行全屏操作命令,比如this.stage.displayState=StageDisplayState.FULL_SCREEN_INTERACTIVE;


可以搞定一般的情况。

特殊一点的是:如果新的state也采用了一个外部swf做背景或者点缀啥的,这个swf假如要全屏,处理起来就有点麻烦的说。

试过通过flash在swf里面写一个全屏的代码,这玩意不好使。假如 flex里面的stage是600X400,而swf是300X100,那么swf怎么执行全屏代码都不能让这个swf撑满全屏,(swf代码能让flex全屏,但意义不大,留白对于ui设计来说,就是侮辱)。
这种情况我试着这样处理:
在mx:SWFLoader里面,假设给一个id="bf",然后添加scaleContent="true" maintainAspectRatio="false",还有一个complete监听,
随后在监听函数里面,把bf.width=stage.stageWidth; bf.height=stage.stageHeight;写进去。这样就可以把该死的swf弄全屏了。至少做背景的时候,我是这样弄的。这个背景的swf要多丰富就看使用flash的造化了。

为什么maintainAspectRatio是false呢?因为该死的4:3和16:10等等的屏幕让你很痛苦的嘛,为true的话,可能在某些屏幕上出现意外的空白。严谨的程式员可能会根据Capabilities.screenResolutionX/Y去做判断啥的,或者有更好的办法,我不知道,但只要在做swf的时候,注意点背景的设计,应该能凑合过去。

你可能感兴趣的:(解决state全屏的问题还不是那么想当然滴)