Adobe Air & Adobe Flex & ActionScript & Mobile Dev & HTML5 & RIA & User Experience
大家好,我是奶綠茶 最近案子的需要,所以會用 Android 和 AIR 來混搭開發 app 遇到的問題有: 1.Android 怎麼啟動另一個 App(Andoird or AIR) ? 2.啟動後,如何帶變數過去? 3.反過來 AIR 啟動 Andoird 且帶值? 先了解 Android 怎麼啟動另一個 App. 使用 Intent 類別, 且指定要啟動的 app package路徑 Intent intent = new Intent( Intent.ACTION_MAIN , null); intent.addCategory( Intent.CATEGORY_LAUNCHER); final ComponentName cn = new ComponentName("com.android.settings", "com.android.settings.fuelgauge.PowerUsageSummary"); intent.setComponent(cn); startActivity(intent); 如果是要啟動 AIR 的 app. 就要在 package [...]
大家好,我是奶綠茶 今天來介紹一下 Adobe AIR ServerSocket 需求: 很多台電腦,在同一個區網,要能彼此溝通,同時 Android 平版也要能傳接值。 解: 本來想如果就只有單 flash 的話, 可以使用 P2P 區網連線就決解了, 但因為 Andriod 平版也要能支援, 所以就改成 Socket 來溝通。 那為什麼不用 Java 架 Socket Server 就好了,因為我是閃客(因為用 Java 做動畫會死人) AIR 端,使用ServerSocket 類別。 在畫面上就只放所有連線的 Client 列表,一個發送訊息的文字和Button, 一個接收的文字 <?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="createComplete(event);" close="appCloseHandler()"> <fx:Declarations> <!– Place non-visual elements (e.g., services, value [...]
Running Panda (熊猫来了)是第一款跨平台技术游戏,使用 Adobe Flash (adobe air) 技术,一次开发就能够在 IOS (iphone itouch ipad ) 系统,Android系统,PC 平台,BlackBerry® PlayBook,BlackBerry Tablet OS 等多个平台运行,即将在这周发布到 Google Market 和苹果 App Store。同时也将登陆 PC 平台和国内各大 App Store。这款游戏的开发让人们看到了flash移动端开发技术广阔的市场前景。 这款游戏开发的作者就是本人。 iTunes下载地址:http://itunes.apple.com/us/app/running-panda/id446065241 APK下载地址:http://www.appchina.com/soft_detail_127151_0_10.html 随着Air2.6大面积推广,Adobe毫不忌讳的踏入了移动领域。在苹果手机和安卓手机大肆PK的今天,平台市场和内容市场也新兴而起,笔者也拿起了笔,不对,准确的说是键盘和鼠标,来尝试一下,如何用熟悉的ActionScript3来开发一款可以跨平台的游戏。 打开Flash Builder 发现新建里多了两个清新的选项,那就传说中的手机项目,新建后发现和普通项目并没有什么不同,只是多了一个主类同名的XML文件,用他可以配置一些手机上的特性,比如开关GPU,比如横屏锁定等等,除了这个几乎和别的AS项目没有任何不同的地方,感觉完全没有任何门槛,只能一个字来表示,那就是:刺激。 在移动平台中开发思路上可能会有些变化,但是总体上没有任何问题,以下是我开发收集的一些经历,比如我们习惯性用键盘按键来发射子弹,但是平板手机中是没有键盘的,所以改成了触屏,而这在PC上表现为鼠标点击,所以实现就变得通俗容易,并且测试的时候也是用鼠标点击,在细节上会有些变化,比如按钮的划过状态在手机上消失,因为手机上快走指针,只有点击,同理监听MouseMove事件的时候 不用再判断是否MouseDown 因为在手机上不可能在未Down的情况下促发Mouse事件,这些都是一些细节上的不同,但是在实现上方案和传统的一样容易,所以为移动所付出的额外代价只是这些细节,如果你开发3个平台以上的话,那么这些细节需要多多考虑,但是比起重新开发三个版本,那这成本几乎是可以忽略不计的。所以还是那两个字:爽。 启动游戏后,在手机上运行了下,效果没有想象的好,FPS一路走低,由于AS3的所有事件都是被异步优化后基于Frame来执行的,所以虽然理论上帧率过了24就可以消除卡的感觉,但是24fps状态下的操作延迟将近40多毫秒的延迟手感和体验都是比较差的,特别是对于动作游戏,如果你是策略的菜单游戏,那么24基本就可以接受了。但如果要做动作游戏,还是要达到普通人类下意识反应速度18毫秒以内,也就是55fps以行。那么优化也是一个非常大的问题,其实很多朋友会把过多的优化思考在变量的多少或者对象的GC上,其实他只是内存优化,而帧率的根本问题还是画面重绘。AS3是非常高级的语言,我们不需要太多低级的操作方法,只需要在画面上让重绘区域尽量减少,让重绘区域中的层数尽量维持在最少的图层,并且全部都使用位图,如果担心文件体积过大,可以导入矢量素材,用bmp来转换成位图也是一个很好的方法,当然手机资源有限一定要注意释放。经过以上基本简单的优化和设计上的规避,笔者的第一款游戏成功的达到了55fps以上,当我看到帧率发生了如此明显的变化后,我真是激动不已,如果你有兴趣的话,也马上动手来试一试把。 由于商业目的熊猫暂时还没有开源,但如果你研究Flash时间很长,如何拿到源码你懂的。 届时您就可以看到源码中是不是如您所说另有技巧。文章只是抛砖迎玉,并非手把手的教学贴。 熊猫的重绘实现100%只使用了三个系统API bitmap.bitmapData = someBitmapData; displayObject.x = someValue; displayObject.y = someValue; 关键技巧并不在与代码本身,或者有一些鲜为人知的API,而在与实现的方法和思路。
原文链接: AIR Native Extension实现iOS应用内付费(In-App Purchase)全教程(四)——ANE面向IAP的测试和开发 本文的内容如下: 在Native扩展中使用StoreKit框架 ActionScript扩展 ANE-IAP开发实例分享 本文用到的工具和设备如下: Flash Builder 4.5 Flex SDK 4.5.1 Flash Professional CS5.5 AIR SDK 3.0 Xcode 4.1 + iOS SDK 4.3 iPad 1 本文例子中的Objective-C部分和AS扩展类库部分的代码作者为我的同事Saumitra Bhave ———————————————————————————– 在Native扩展中使用StoreKit框架 下载安装XCode 4和iOS SDK之后,让我们先来了解一下苹果原生类库是如何处理应用内付费功能的。iOS SDK中有一个框架叫做StoreKit,它负责应用程序和应用商店的业务流程。StoreKit中有一些负责具体功能的类,商品的请求,请求结果,结果回调,购买,购买队列等都由不同的类来完成。 如上图所示,StoreKit解决内付费业务的大体流程可以概括成这样,SKProductsRequest向商店发出请求获得商品信息,商店通过回调函数SKProductsRequestDelegate把请求的结果SKProductsReponse传了回来,如果用户选择购买商品,则创建一个SKPayment实例到购买队列SKPaymentQueue中,然后通过回调SKPaymentTransactionObserver来返回购买的结果。 我现在拿请求商品信息的部分来举例说明一下: SKProductsRequest* req = [[SKProductsRequest alloc] initWithProductIdentifiers:pids]; req.delegate = observer; [req start]; 上面的Objective-C的代码如果转译成ActionScript 3.0,相当于这个意思: var req:SKProductsRequest [...]
原文链接: AIR Native Extension实现iOS应用内付费(In-App Purchase)全教程(三)——iOS应用内付费简介和准备流程 本文的主要内容如下: IAP简介 商品与交易 测试IAP的准备流程 ———————————————————————————— IAP简介 IAP的全称是In-App Purchase,应用内付费。这种业务模式允许用户免费下载试用,对应用内提供的商品选择消费,比如购买游戏道具,购买游戏等级等等。相比完全收费的应用而言,应用内付费给用户试用的机会,不会让优秀的应用因为缺乏用户的认知而丧失消费者;而且对于开发商,也不需要为了让用户试用而单独发布一款免费的精简版本。 ———————————————————————————— 商品与交易 苹果官方的关于IAP的帮助文档是只对注册开发者开放的,所以我不方便把它转载在这里,但我可以对IAP里的关键因素做一个通俗易懂的介绍。 IAP里有两个关键的词,商品(Product)和交易(Transaction)。 商品可以是一种虚拟的道具,一个隐藏的关卡或者地图,但必须是直观的,可以让用户购买后直接获益的产品。IAP的商品从消费性质上分为四种: 1,消耗型商品,比如游戏道具,子弹,药品等等。由于这类商品可以被消耗,所以支持重复购买。苹果应用商店不保存此类商品的购买记录,如果要保存则需要开发者同步到自己的服务器上。 2,非消耗型商品,比如游戏关卡,隐藏地图等等。这类商品只要购买一次便可以了,苹果应用商店里每一个用户对非消耗型商品的购买都有记录,可以在不同的设备上恢复购买状态,这个恢复的过程叫做Restore。 3,自动重置型订阅,比如电子杂志,读物等。消费者购买这类商品时会从列表中选择一个有效期限,卖家在定义商品的时候从一群固定的选项中选择添加一个有效期,比如7天,一个月,两个月。过了有效期之后,商品的购买状态会被自动重置成未购买,要想继续获得内容则需要再次订阅。这种类型的商品和非消耗型商品一样,会在苹果商店内保存购买记录。 4,非自动重置型订阅,比如用户订阅电子杂志和读物报刊时需要从自定义的期限列表中选择期限,而不是苹果提供的固定选项,比如9天,一个半月或任意时间。在这种情况下,苹果商店无法根据期限来控制订阅的到期行为,所以一切都需要开发商自己编写相应的逻辑来实现。 交易是指用户对一个商品的购买行为,当用户点击购买一件商品时,一个新的付费行为就被添加到付费队列中,付费队列是一条系统线程,即使应用程序终止仍然会继续执行。 ———————————————————————————— 测试IAP的准备流程 如果你是一个注册的苹果开发者,接受了最新的苹果开发者协议,并且签署了iOS付费应用合同,那么你就可以继续IAP的测试了。 如果此时你对iOS的开发流程不是很熟悉,在阅读下面的内容之前,我强烈建议你先看看我的这几篇文章: 如何成为一个合法的iOS开发者 如何使用iOS开发者授权以及如何申请证书 如何为iTunes Connect准备应用 如果你已经注册成为苹果开发者,并且熟知了如何给设备授权,如何申请证书,如何发布应用,那么请继续阅读我下面的内容: 使用未越狱的设备 测试IAP的项目不能使用越狱的设备,否则会出现无法连接到应用商店的错误。恢复设备到未越狱的系统后,登陆Provisioning Portal添加设备的UID。 使用没有通配符的App ID 在定义App的Bundle ID的时候,我曾经介绍过可以使用类似 com.jamesli.* 这样的值来覆盖多个应用的ID。这种定义方式不能用在打算使用IAP的应用上面,定义IAP的应用必须使用唯一的ID,如com.jamesli.ghostbride。如果正确定义了,应用的In-App Purchase的功能是默认开启的,如下图: 在iTunesConnect创建应用 登陆iTunesConnect,创建一个新的应用,即使该应用尚未开发,也可以用一些假的文字和图片来代替,创建好之后切记要点击Ready to Upload binary将应用的状态变为Waiting for upload。 管理In-App Purchase商品 在应用列表中点击新创建的应用图标,进入应用首页,在右面的一行按钮中选择Manage In-App Purchase,进入内付费商品管理页面。通过点击左上角的Create New按钮可以进入商品页面选择创建一个新的商品。页面中显示的四种商品分别是我在本文介绍过的四种商品,消耗型商品(Consumable),非消耗型商品(Non-Consumable),自动重置型订阅(Auto-Renewable [...]