是智能手机吗?现在的智能手机都内置的有传感器,如Android系统的手机当手机由横屏切换为竖屏时会调用
onConfigurationChanged事件,可以通过下面的代码来判断是横屏还是竖屏,然后做相应的改变:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
// 横屏
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
// 竖屏
}
}
一般当手机由横屏切换为竖屏时屏幕上内容会重绘。
如果不是智能手机就不知道怎么处理了
谢谢,是智能手机,你说的这种可以,但现在我想的是用的Flex 做
如果是air的话,stage有orientationChange和orientationChanging事件
我写了stage 通过事件来监听它但报错了,不知道咋做你能过我一下代码吗?
@l z q: 编译错还是运行错,什么错?
编译的时候
编译的时候报:
此行的多个标记:
-1120: 访问的属性 onOrientationChanging 未定义。
-1120: 访问的属性 stage 未定义。
代码:
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
title="主页视图">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.states.State;
stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE, onOrientationChanging);
public function onOrientationChanging( event:StageOrientationEvent ):void
{
// If the stage is about to move to an orientation we don't support, lets prevent it
// from changing to that stage orientation.
if(event.afterOrientation ==
StageOrientation.ROTATED_LEFT || event.afterOrientation ==
StageOrientation.ROTATED_RIGHT )
event.preventDefault();
}
]]>
</fx:Script>
</s:View>
@l z q: 首先要确定是air工程,只有air才有这个事件。
然后下载最新的playerglobal.swc:http://www.adobe.com/support/flashplayer/downloads.html
安装方法:
1.改名成playerglobal.swc
2.复制到\frameworks\libs\player\11.0
3.在flashdeveloper中Project → Properties → ActionScript Compiler设置flash版本为11
还有在<fx:Script>标记内只能定义函数之类的,不能直接写代码。