1、 Air如何判断android、ios 平台网络连接状态?

Android,使用as3原生api:

[javascript] view plain copy
  1. if(NetworkInfo.isSupported)//只有android支持
  2. NetworkInfo.networkInfo.addEventListener(Event.NETWORK_CHANGE,onNetWorkChanged);
  3. onNetWorkChanged();
  4. }
  5. rivatefunctiononNetWorkChanged(e:Event=null):void
  6. {
  7. varisActived:Boolean=false;
  8. varinterfaces:Vector.<NetworkInterface>=NetworkInfo.networkInfo.findInterfaces();
  9. varnetInterface:NetworkInterface;
  10. for(vari:int=0,len:int=interfaces.length;i<len;i++)
  11. {
  12. netInterface=interfaces[i];
  13. if(netInterface.name.toLowerCase()=="wifi"&&netInterface.active){
  14. isActived=true;
  15. break;
  16. }elseif(netInterface.name.toLowerCase()=="mobile"&&netInterface.active){
  17. isActived=true;
  18. break;
  19. }
  20. }
  21. PhoneConfig.isOpenNet=isActived;
  22. if(isActived==false)
  23. {
  24. MsgManager.show("当前网络不可用,请检查你的网络设置。");
  25. }
  26. }


Ios平台,需要引入独立开发的ane扩展和类库,判断核心代码:

[javascript] view plain copy
  1. if(netInterface.name.toLowerCase()=="en0"&&netInterface.active){//wifi
  2. isActived=true;
  3. break;
  4. }elseif(netInterface.name.toLowerCase()=="pdp_ip0"&&netInterface.active){//gprs
  5. isActived=true;
  6. break;
  7. }

2、 iphone 5读不到正确尺寸问题

ios平台读取stageWidth和stageHeight方法和普通的air方法一致,但iphone5出现读取不正确的情况。

解决方法:需要根目录放一张名为Default-568h@2x.png尺寸为640*1136的图片,并且打包进去。

详情见http://zengrong.net/post/1752.htm#more-1752

3、 ios平台运行 release版本中途卡住问题

同一个文件 加载到当前域 加载第二次时 就会卡住(ipa调试版正常,release版就有问题;androidapk不论是调试版还是release都正常)

4、 打包ipa失败,提示无效的文件:

打包ipa时,如果文件里面有一个不正确格式的swf,打包必定失败;如果把swf换成其他不常用文件名,即可解决。

5、 android、ios平台最小化、关闭电源时app的检测和处理方式

手机测试结果:

1)android中 按home键或电源键都是使程序后台运行,socket不断。

2)ios中按home键是使程序后台运行,socket不断,按电源键程序后台运行,但socket断。

通过事件ACTIVATE、DEACTIVATE来进行代码逻辑控制

NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE,onActivate);

NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE,onDeactivate);

6、 android、ios上文件存储方法

核心代码:

[javascript] view plain copy
  1. this.saveSDCardFile(File.applicationStorageDirectory.url+"/aa.swf",btye);
  2. (this.getSDCardFile(File.applicationStorageDirectory.url+"/aa.swf");
  3. /**
  4. *读取sd卡文件
  5. */
  6. privatefunctiongetSDCardFile(url:String):ByteArray
  7. {
  8. varfile:File=File.applicationStorageDirectory.resolvePath(url);
  9. if(file.exists==false)
  10. returnnull;
  11. varstream:FileStream=newFileStream();
  12. stream.open(file,FileMode.READ);
  13. varbytes:ByteArray=newByteArray;
  14. stream.readBytes(bytes,0,stream.bytesAvailable);
  15. stream.close();
  16. returnbytes;
  17. }
  18. /**
  19. *往sd卡上存储文件
  20. */
  21. privatefunctionsaveSDCardFile(url:String,bytes:ByteArray):void
  22. {
  23. varfile:File=File.applicationStorageDirectory.resolvePath(url);
  24. varstream:FileStream=newFileStream();
  25. stream.open(file,FileMode.WRITE);
  26. stream.writeBytes(bytes);
  27. stream.close();
  28. }

注意android和ios上一些目录路径不一样

[javascript] view plain copy
  1. trace(File.applicationDirectory.url);//App:/(/data/data/app.appId/app/assets)
  2. trace(File.applicationStorageDirectory.url);//|app-storage:/(/data/data/app.appID/appID/LocalStore)
  3. trace(File.documentsDirectory.url);
  4. trace(File.userDirectory.url);
  5. trace(File.desktopDirectory.url);
  6. trace(File.createTempDirectory().url);//data/data/app.appId/cache
  7. //android:
  8. //app:/
  9. //app-storage:/
  10. //file:///storage/sdcard0
  11. //file:///storage/sdcard0
  12. //file:///storage/sdcard0
  13. //file:///data/data/air.TestLoad.debug/cache/FlashTmp.u15893
  14. //ios:
  15. //app:/
  16. //app-storage:/
  17. //file:///var/mobile/Applications/EBFEE682-C347-4BC1-9264-6E4B65F4D2BA/Documents
  18. //file:///var/mobile/Applications/EBFEE682-C347-4BC1-9264-6E4B65F4D2BA
  19. //file:///var/mobile/Applications/EBFEE682-C347-4BC1-9264-6E4B65F4D2BA/Desktop
  20. //file:///private/var/mobile/Applications/EBFEE682-C347-4BC1-9264-6E4B65F4D2BA/tmp/FlashTmp.bDIE2x

Android 和 ios 文件系统差异http://www.cnblogs.com/sevenyuan/archive/2013/03/07/2948300.html

7、 游戏过程中的待机处理,比如在激烈pk中不允许手机进入睡眠状态:

通过设置NativeApplication.nativeApplication.systemIdleMode属性

[javascript] view plain copy
  1. /**
  2. *是否关闭休眠模式
  3. *@paramvalue
  4. */
  5. publicfunctionkeepAwake(value:Boolean):void
  6. {
  7. if(value)
  8. NativeApplication.nativeApplication.systemIdleMode=SystemIdleMode.KEEP_AWAKE;
  9. else
  10. NativeApplication.nativeApplication.systemIdleMode=SystemIdleMode.NORMAL;
  11. }

8、 如何读取air的app配置文件?如何读取里面的版本号?

[javascript] view plain copy
  1. //版本号
  2. publicfunctiongetversion():String
  3. {
  4. varappDescriptor:XML=NativeApplication.nativeApplication.applicationDescriptor;//配置文件
  5. varns:Namespace=appDescriptor.namespace();
  6. return""+appDescriptor.ns::versionNumber;
  7. }

9、 统计流量功能(未找到as3原生api支持,可通过第三方ane扩展实现)

10、手机加载大文件解压缩很慢,卡住问题(暂无较好的规避方法)

11、 检测鼠标按下菜单键、及其他键的方法及响应

[javascript] view plain copy
  1. NativeApplication.nativeApplication.addEventListener(KeyboardEvent.KEY_DOWN,this.keyHandler);
  2. privatefunctionkeyHandler(e:KeyboardEvent):void
  3. {
  4. if(e.keyCode==Keyboard.BACK)
  5. {
  6. e.preventDefault();//取消返回键的退出事件
  7. ExitPane.instance.show();
  8. }
  9. elseif(e.keyCode==Keyboard.MENU)
  10. {
  11. this.times++;
  12. if(times>=5)
  13. ClientConfig.webDebug=true;
  14. }
  15. elseif(e.keyCode==Keyboard.SEARCH)
  16. {
  17. }
  18. elseif(e.keyCode==Keyboard.HOME){
  19. //HandleHomebutton.
  20. }
  21. }

12、 手机调试不方便怎么办?设置手机代理,把ip指向电脑,这样所有数据包就会通过电脑发送和接受,用电脑抓包调试。

13、 其他知识点:

运行ios发行版ipa特有问题:

1)uint和int的比较:int类型的-1大于uint类型的0;

2)String(null) 依旧是null值,而不是字符串的"null"

NativeApplication 的exit() 方法不会导致调度exiting 事件;

android中任务管理器中结束应用也不会派发exit事件,ios中未知

ios下通过任务管理器关闭app,app本身无法控制退出

flash builder 编译提示错误:Erroroccurred while packaging the application: Map failed

解决办法:一般清理一下项目就ok了

stage.displayState =StageDisplayState.FULL_SCREEN

设置全屏后立刻读取stagewidth和stageheight是不准确的,需要延时到下一帧再读取

桌面 移动设备 api支持的差异http://help.adobe.com/en_US/air/build/WS144092a96ffef7cc16ddeea2126bb46b82f-8000.html

adt 打包时目标参数详解http://help.adobe.com/zh_CN/air/build/WS901d38e593cd1bac1e63e3d128cdca935b-8000.html

更多相关文章

  1. android 获取文件的扩展名和去掉文件的扩展名
  2. android混淆出错更新progurad
  3. Android基础知识总结
  4. Android实现文件上传功能(接收端用strust2)
  5. Android(安卓)如何实现带滚动条的TextView,在更新文字时自动滚动
  6. Android(安卓)XML Editor cannot process this input
  7. Java編程和Android編程的區別
  8. Android(安卓)requires compiler compliance level 5.0 or 6.0.
  9. NPM 和webpack 的基础使用

随机推荐

  1. 通过html5 touch事件封装手势识别组件
  2. 关于大背景图片随浏览器百分比缩放的问题
  3. 关于 jq/js获取几层/多层frame/frameset
  4. 如果鼠标在图片上,如何在图片上获取文字?
  5. Html--树莓派作为Web服务器
  6. 像那种以.html为后缀名的网站使用的是什
  7. 使用相同的colgroup时,多个HTML表具有不同
  8. GET错误Glyphicon-halflings-regular.ttf
  9. 绝对定位的div层,别再让flash盖住了
  10. 点击后如何使弹出文本消失?