AIR移动(Starling)开发笔记基础篇
来源:互联网 发布:网络选修课刷课软件 编辑:程序博客网 时间:2024/06/04 17:57
AIR移动(Starling)开发笔记基础篇
---------kiddy Ps:文档写的不是很好,欢迎指正和扩展
Starling相关
自定义移动动画
A.自定义函数
var tw:Tween = new Tween(_ball, 1, transFun);Starling.juggler.add(tw);private function transFun(pre:Number):void{ //pre的范围[0-1],执行比列 _ball.x = 100 + Math.sin(pre) * 300; _ball.y = 100 + Math.cos(pre) * 200;}
B.自定义更新方法
var tw:Tween = new Tween(_ball, Number.MAX_VALUE);tw.onUpdate = upDate;Starling.juggler.add(tw);private function upDate():void { .....}
C.最后一种方法和前面的相识,也就相当于扩展Tween的功能。
比如说MyRotationTween之类的,详情请看如下代码:写的并不是很好,见谅!
Demo:
/** * @author kiddy * 创建时间:2014-1-20 * 介绍: */package game.view.general.player { import starling.animation.Tween; import starling.core.Starling; import starling.display.Image; import starling.display.Sprite; public class MoveTween extends Sprite { private var _delay:Number; private var _image:Image; private var _onComFun:Function = null; private var _tween:Tween; public function MoveTween (delay:Number) { _delay = delay; _image= new Image(GameData.instance.getUITexture("coin")); } public function doAnimation(onCom:Function):void { _onComFun = onCom; _tween = new Tween(_image, Number.MAX_VALUE, onUpDateMove); _tween.delay = _delay; _tween.onComplete = onComplete; _tween.onStart = onStart; //动画开始时,才将显示对象显示 Starling.juggler.add(_tween); } private function onStart():void { this.addChild(_image); } private function onUpDateMove(value:Number):void {//跳出Tween的条件,并且调用动画结束 if (_image.x > 600) { Starling.juggler.remove(_tween); this.onComplete(); } else { _image.x += 1; } } private function onComplete():void { this.dispose(); if (_onComFun != null) { _onComFun(); } } override public function dispose():void { this.removeChildren(0, -1, true); super.dispose(); } }}
查看网络连接情况
注:该种查看网络连接情况并不太可行,一般可以通过扩展ANE来实现
相关ANE 请查看ANE 扩展相关
/** * 检测网络连接情况 * @param callFun */public function getNetWorkInfo(callFun:Function):void{ monitor = new URLMonitor(new URLRequest("http://www.7k7k.com")); monitor.addEventListener(StatusEvent.STATUS, announceStatus); monitor.start(); netCallFun = callFun;}private function announceStatus(e:StatusEvent):void { trace("Status change. Current status: " + monitor.available); if (netCallFun != null) {//回调 netCallFun(monitor.available); } monitor.stop(); monitor.removeEventListener(StatusEvent.STATUS, announceStatus); monitor = null; netCallFun = null;}
分辨率适配方法
A.拉伸适配…
_starling.addEventListener(starling.events.Event.ROOT_CREATED, onRootCreated);private function onRootCreated(e:starling.events.Event):void { var v:Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight); _starling.viewPort = v; _starling.stage.stageWidth = GameData.WIDTH; _starling.stage.stageHeight = GameData.HEIGHT;}
B.留黑边……
private function onRootCreated(e:starling.events.Event):void{ var viewport:Rectangle = new Rectangle(0, 0, GameData.WIDTH, GameData. HEIGHT); var aspect:Number = stage.stageWidth / stage.stageHeight; if (aspect > GameData.ASPECT_RATIO) { var moveX:Number = (stage.stageWidth - stage.stageHeight * GameData. ASPECT_RATIO) / 2; viewport = new Rectangle(moveX, 0, stage.stageHeight * GameData. ASPECT_RATIO, stage.stageHeight); } else if (aspect < GameData.ASPECT_RATIO) { var moveY:Number = (stage.stageHeight - stage.stageWidth / GameData. ASPECT_RATIO) / 2; viewport = new Rectangle(0, moveY, stage.stageWidth, stage.stageWidth / GameData.ASPECT_RATIO); } else { viewport = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight); } _starling.viewPort = viewport; // _starling.stage.stageWidth = GameData.WIDTH; // _starling.stage.stageHeight = GameData.HEIGHT;
自定义手机按键
注:只适合Android系统
if (isAndroid) { //如果是在安卓手机上,则监听按键和是否监听设备丢失 NativeApplication.nativeApplication.addEventListener(KeyboardEvent. KEY_DOWN, CheckKeypress); Starling.handleLostContext = true;}protected function CheckKeypress(event:KeyboardEvent):void { switch (event.keyCode) { case Keyboard.BACK: event.preventDefault(); App.instance.ClickBack(); break; case Keyboard.HOME: event.preventDefault(); break; case Keyboard.SEARCH: event.preventDefault(); break; case Keyboard.MENU: event.preventDefault(); break; default: break; }}
Starling滤镜
注:在Starling中,一个显示对象只能添加一种滤镜,滤镜需要慎用,消耗大量性能
var colorF:ColorMatrixFilter = new ColorMatrixFilter();colorF.adjustSaturation(-1); //变灰var blurF:BlurFilter = new BlurFilter();//模糊BlurFilter.createGlow();//发光滤镜BlurFilter.createDropShadow(); //阴影
禁止进入休闲模式
注:只适合Android系统
修改 **-app.xml中的节点
<android> <manifestAdditions> <![CDATA[ <manifest android:installLocation="auto"> <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> </manifest> ]]> </manifestAdditions></android>
框架开发应用如何设置背景为透明
修改 **-app.xml中的节点
<systemChrome>none</systemChrome> <transparent> true </transparent>
AIR移动应用图标尺寸(2013年)
Android: 24*24,32*32,36*36,48*48,72*72iOS: 29*29,48*48,57*57,58*58,72*72,96*96,114*114,144*144,512*512
Android 上的图标
在 Android 上,应用程序描述符中指定的图标会用作应用程序 Launcher 图标。应用程序 Launcher 图标应作为 36x36、48x48、72x72 和 96x96 像素的 PNG 图像集来提供。这些图标尺寸分别用于低密度、中密度和高密度屏幕。
iOS 上的图标
在应用程序描述符中定义的图标用于 iOS 应用程序的以下位置:
29x29 像素图标 — 较低分辨率 iPhone/iPod 的 Spotlight 搜索图标和较低分辨率 iPad 的设置图标。
48x48 像素图标 — AIR 给该图像添加一个边框,且在较低分辨率 iPad 上将其用作一个 50x50 的 Spotlight 搜索图标。
50x50 像素图标 — 较低分辨率 iPad 的 Spotlight 搜索图标。
57x57 像素图标 — 较低分辨率 iPhone/iPod 的应用程序图标。
58x58 像素图标 — Retina 显示屏 iPhone/iPod 的 Spotlight 图标和 Retina 显示屏 iPad 的设置图标。
72x72 像素图标(可选)— 较低分辨率 iPad 的应用程序图标。
100x100 像素图标 — Retina 显示屏 iPad 的 Spotlight 搜索图标。
114x114 像素图标 — Retina 显示屏 iPhone/iPod 的应用程序图标。
144x144 像素图标 — Retina 显示屏 iPad 的应用程序图标。
512x512 像素图标 — 较低分辨率 iPhone/iPod/iPad 的应用程序图标。iTunes 显示此图标。当您将最终应用程序提交给 Apple 应用程序库时,512 像素 PNG 文件仅用于测试应用程序的开发版本,须单独以 JPG 文件格式提交 512 图像。它不包含在 IPA 中。
1024x1024 像素图标 — Retina 显示屏 iPhone/iPod/iPad 的应用程序图标。
Starling自带素材管理器
AssetMan = new AssetManager();AssetMan.verbose = true;//加载xml文件AssetMan.enqueue("resource/config/player.xml");//加载素材AssetMan.enqueue("resource/bitmap/GameInfoUI.png");AssetMan.enqueue("resource/bitmap/GameInfoUI.xml");//加载字体AssetMan.enqueue("resource/font/yellowfont.fnt");AssetMan.enqueue("resource/font/yellowfont.png");//加载声音AssetMan.enqueue("resource/sound/click.mp3");AssetMan.loadQueue(onLoadingConfig);private function onLoadingConfig(value:Number):void { if (value < 1) { App.instance.loadInfo(value , "正在加载文件..."); } else { _xml = AssetMan.getXml("player") _infoAtlas = AssetMan.getTextureAtlas("GameInfoUI"); _sound = AssetMan.getSound("click"); _moneyTf = new TextField(GameData.WIDTH, 64, "0", "YellowFont", 40, 0xffffff); }}
Starling嵌入ATF格式
[Embed(source="/../attchment/UI_Loading.atf",mimeType="application/octet-stream"))]private static var LoadingUI_PNG:Class[Embed(source = "/../attchment/UI_Loading.xml", mimeType = "application/octet-stream")]private static var LoadingUI_XML:Classprivate var _texAltas:TextureAtlas = null;_texAltas = new TextureAtlas(starling.textures.Texture.fromAtfData(new LoadingUI_PNG()), XML(new LoadingUI_XML()));
- AIR移动(Starling)开发笔记基础篇
- (新手入门)AS3基于starling引擎移动开发之Starling入门
- (新手入门)AS3基于Starling引擎移动开发之starling简单碰撞
- Starling移动开发相关问题及解决方案
- Starling开发微信打灰机(一)
- Starling开发微信打灰机(二)
- (新手入门)AS3基于starling引擎移动开发之入门介绍
- air 移动开发配置文件详解
- starling 笔记
- starling 笔记
- AIR+Starling 中的反射效率
- Starling在应用于移动设备开发时的注意事项
- starling性能问题笔记(一)
- starling性能问题笔记(二)
- Starling学习笔记
- starling 笔记 总结
- 使用air进行移动app开发常见功能和问题(一)
- 使用air进行移动app开发常见功能和问题(二)
- 项目的结构
- UVA 11624
- GUI_Download的Codepage参数
- .九图片详解和制作
- iOS工程自动打包并发布通过脚本实现
- AIR移动(Starling)开发笔记基础篇
- myeclipse个人注释模板
- excel文件导入
- HTML5和css3超实用的新属性集合
- 169. Majority Element 破解思路
- 关于native,transient,volatile,synchronized四个关键字的使用
- Hibernate之No row with the given identifier exists
- 关于UIScollView及其子类的在导航控制器
- 53.View the Exhibit and examine the data in the PROMOTIONS table.