1、? Air如何判斷android、ios 平臺網絡連接狀態?
Android,使用as3原生api:
?
[javascript]?view plaincopy
if(NetworkInfo.isSupported)????????????????????NetworkInfo.networkInfo.addEventListener(Event.NETWORK_CHANGE,onNetWorkChanged);??????????????????????????onNetWorkChanged();?????????}??rivate?function?onNetWorkChanged(e:Event?=?null):void?????????{????????????????????????????????????????????var?isActived:Boolean?=false;???????????????????????????????????varinterfaces:Vector.<NetworkInterface>?=NetworkInfo.networkInfo.findInterfaces();???????????????????????????????????varnetInterface:NetworkInterface;??????????????????for?(?var?i:int?=?0,?len:int=?interfaces.length;?i?<?len;?i++)??????????????????{???????????????????????????netInterface?=interfaces[i];???????????????????????????if(netInterface.name.toLowerCase()==?"wifi"?&&?netInterface.active)?{?????????????????????????????????????isActived=?true;?????????????????????????????????????break;???????????????????????????}?elseif(netInterface.name.toLowerCase()?==?"mobile"?&&netInterface.active)?{?????????????????????????????????????isActived=?true;?????????????????????????????????????break;???????????????????????????}??????????????????}??????????????????PhoneConfig.isOpenNet?=isActived;???????????????????????????????????if(isActived?==?false)??????????????????{???????????????????????????MsgManager.show("當前網絡不可用,請檢查你的網絡設置。");??????????????????}?????????}??
? ? ? ? ? ?Ios平臺,需要引入獨立開發的ane擴展和類庫,判斷核心代碼:
?
?
[javascript]?view plaincopy
if(netInterface.name.toLowerCase()==?"en0"?&&?netInterface.active)?{??????????????????isActived=?true;??????????????????break;??????????????}else?if(netInterface.name.toLowerCase()==?"pdp_ip0"?&&?netInterface.active)?{??????????????????isActived=?true;??????????????????break;???????????}?? ?
?
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 plaincopy
????this.saveSDCardFile(File.applicationStorageDirectory.url+?"/aa.swf",?btye);??(this.getSDCardFile(File.applicationStorageDirectory.url?+?"/aa.swf");??????????????private?functiongetSDCardFile(url:String):ByteArray??????????{??????????????var?file:File?=File.applicationStorageDirectory.resolvePath(url);??????????????if(file.exists?==?false)??????????????????return?null;???????????????????????????var?stream:FileStream?=?new?FileStream();??????????????stream.open(file,FileMode.READ);??????????????var?bytes:ByteArray?=?new?ByteArray;??????????????stream.readBytes(bytes,0,?stream.bytesAvailable);??????????????stream.close();??????????????return?bytes;??????????}??????????????????????private?functionsaveSDCardFile(url:String,?bytes:ByteArray):void??????????{??????????????var?file:File?=File.applicationStorageDirectory.resolvePath(url);??????????????var?stream:FileStream?=?new?FileStream();??????????????stream.open(file,FileMode.WRITE);??????????????stream.writeBytes(bytes);???????????????????????????stream.close();???????}?? 注意android和ios上一些目錄路徑不一樣
?
[javascript]?view plaincopy
????trace(?File.applicationDirectory.url);??????????????????????trace(File.applicationStorageDirectory.url);??????????????????????trace(File.documentsDirectory.url);??????????????????????trace(File.userDirectory.url);??????????????????????trace(File.desktopDirectory.url);??????????????????????trace(File.createTempDirectory().url);?????????????????????????????????????????????????????????????????????? ?
Android 和 ios 文件系統差異http://www.cnblogs.com/sevenyuan/archive/2013/03/07/2948300.html
?
7、? 游戲過程中的待機處理,比如在激烈pk中不允許手機進入睡眠狀態:
通過設置NativeApplication.nativeApplication.systemIdleMode屬性
?
[javascript]?view plaincopy
?????????????public?functionkeepAwake(value:Boolean):void??????????{??????????????if(value)??????????????????NativeApplication.nativeApplication.systemIdleMode=?SystemIdleMode.KEEP_AWAKE;??????????????else??????????????????NativeApplication.nativeApplication.systemIdleMode=?SystemIdleMode.NORMAL?;??????????}?? ?
?
8、? 如何讀取air的app配置文件?如何讀取里面的版本號?
?
[javascript]?view plaincopy
??public?function?get?version():String??????????{??????????????var?appDescriptor:XML?=NativeApplication.nativeApplication.applicationDescriptor;??????????????var?ns:Namespace?=appDescriptor.namespace();??????????????return?""?+appDescriptor.ns::versionNumber;??????????}?? ?
9、? 統計流量功能(未找到as3原生api支持,可通過第三方ane擴展實現)
?
10、手機加載大文件解壓縮很慢,卡住問題(暫無較好的規避方法)
?
11、 ?檢測鼠標按下菜單鍵、及其他鍵的方法及響應
?
[javascript]?view plaincopy
NativeApplication.nativeApplication.addEventListener(KeyboardEvent.KEY_DOWN,this.keyHandler);??private?function?keyHandler(e:KeyboardEvent):void?????????????????????{??????????????????????????????if(e.keyCode==Keyboard.BACK)??????????????????????????????{???????????????????????????????????????e.preventDefault();???????????????????????????????????????????????????????????????????????????????ExitPane.instance.show();??????????????????????????????}??????????????????????????????elseif(e.keyCode==?Keyboard.MENU)??????????????????????????????{???????????????????????????????????????this.times++;???????????????????????????????????????if(times>=?5)?????????????????????????????????????????????????ClientConfig.webDebug=?true;??????????????????????????????}??????????????????????????????elseif(e.keyCode?==?Keyboard.SEARCH)??????????????????????????????{????????????????????????????????????????????????????????????????????}??????????????????????????????else??if?(e.keyCode?==?Keyboard.HOME)?{?????????????????????????????????????????????????????????????????????}?????????????????????}?? ?
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
轉載于:https://www.cnblogs.com/zhepama/p/3473658.html
總結
以上是生活随笔為你收集整理的使用air进行移动app开发常见功能和问题(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。