Native Android Admob Support For Adobe Air

20 2012 In: Adobe, Air, Android, Flash

家好,我是奶綠茶
最近想在 Adobe AIR App 放上 Admob 的廣告
查了一下相關文章,最好的方法還是使用原生的類別
好在 AIR3.0 後已經可以呼叫原生程式
接著就可以開始來實作。

1.首先你要先知道如何在 Android 上放 Admob
參考官方教學

https://developers.google.com/mobile-ads-sdk/download

2.使用原生程式,開發出 AIR 可以呼叫的 jar 檔
這裡要注意的是,開發時要匯入 Admob的jar
但匯出時, 並不會把該 jar 包進去
所以最後還需要下個 Command 把二個 jar 合拼成一個(這個我卡了好久)

3.AIR端使用 ExtensionContext 類別
開發工具為 FlashDevelop 4.0
加上 Ant 外掛(用來快速執行Command)

上 Ant 外掛(用來快速執行Command)

APK下載
轉載請註明出處

SourceCodeDownload

分享到新浪微博 分享到人人网 分享到豆瓣 分享到鲜果 分享到百度空间 分享到开心网 QQ书签 分享到YAHOO! 分享到Google Google Buzz 分享到Facebook 分享到Plurk Digg delicious Technorati Twitter

最近 Loader 报错

Error #2035: 找不到URL

这是有可能因为 Loader.unloadAndStop() 可能会引起 IOErrorEvent.IO_Error 错误。
情况不定期发生。

分享到新浪微博 分享到人人网 分享到豆瓣 分享到鲜果 分享到百度空间 分享到开心网 QQ书签 分享到YAHOO! 分享到Google Google Buzz 分享到Facebook 分享到Plurk Digg delicious Technorati Twitter

杭州御宅网络科技有限公司招聘

16 十二 2011 In: Life is Cool!

我们热衷及博精于动画、漫画及电脑游戏(ACG),具有超出一般人知识面,鉴赏,游玩能力的特殊群体,我们自称为御宅族。
因此我们与众不同,我们致力于成为国内公司群体中最能描述御宅定义的精品游戏开发者,向世人展示御宅其优良一面的文化。

如果你也在杭州,或者你想来杭州发展,如果你在做Flash游戏开发,请与我联系 aedisju#gmail.com 。

Flash前端开发主程(8000-15000)
岗位职责:
参与游戏前端开发和技术调研。负责架构设计。
根据业务需求实现技术方案,并能够做到资源的整合和优化。
协调前端与服务端,美术,策划之间的关系。

任职要求:
两年以上Flash/Flex/Java开发经验。
熟练使用Action Script 3.0在Flash IDE环境下开发,熟练使用Flex标准组件。
熟悉Socket通讯机制。
熟悉各种数据结构和算法。
熟悉垃圾回收机制。
具有良好的敬业精神和团队协作能力,富有责任心,以及较好的沟通表达能力。
3年以上相关工作经验有优先。
有完整的游戏项目开发经验优先。

Flash前端开发工程师(3500 – 8000)
岗位职责:
理解模块在系统内的关系及构建。
完成游戏系统下模块化的开发工作。
跟进学习,不断自我成长。

任职要求:
一年以上Flash/Flex开发工作经验。
拥有良好的沟通能力。
拥有良好的逻辑思维能力。
拥有良好的编码风格和面向对象的编程思想。
计算机或者美术相关专业优先。

分享到新浪微博 分享到人人网 分享到豆瓣 分享到鲜果 分享到百度空间 分享到开心网 QQ书签 分享到YAHOO! 分享到Google Google Buzz 分享到Facebook 分享到Plurk Digg delicious Technorati Twitter

Flex SDK Security Update

2 十二 2011 In: ActionScript3, Flex

昨天突然看到 Flex SDK 居然大幅度發布安全性更新
不是都要捐給 Apache 了嗎?
從 3.0.0 一路到 4.5.1 全部都有更新
而最新的 4.6 則不受影響,可以參考以下文章

Security update available for Adobe Flex SDK (APSB11-25)
Flex Security Issue APSB11-25

只要版號後面加上 A 的都是安全更新過的,e.g. Flex 4.5.1.21328A
另外 Adobe 也提供了補救工具 APSB11_25_Patch_Tool.air
可以直接對既有的 SWF 進行偵測並修復
詳細使用請參考上面連結說明

很好奇動作這麼大,到底是什麼樣的漏洞?
根據文件說明找了原始碼 mx.modules.ModuleManager.as
內的 inner class ModuleInfo 的 load() function

  public function load(applicationDomain:ApplicationDomain = null,
                       securityDomain:SecurityDomain = null,
                       bytes:ByteArray = null,
                       moduleFactory:IFlexModuleFactory = null):void

Flex SDK 4.5.1,在 ModuleManager.as 的 463 行
原本是這樣

      c.securityDomain = securityDomain;
      if (securityDomain == null && Security.sandboxType == Security.REMOTE)
          c.securityDomain = SecurityDomain.currentDomain;

安全更新後變成這樣

      // setting securityDomain is not allowed on non-REMOTE sandboxes
      if (securityDomain != null && Security.sandboxType == Security.REMOTE)
          c.securityDomain = securityDomain;

簡單講就是「對於非 REMOTE 沙箱應用,不允許設定外部 Module 的 securityDomain」

好像對企業用戶本地端 App 才有影響吧
至今做過的應用幾乎全部跑在網頁上,連 Module 都很少用到
無法感受到這有多嚴重…

分享到新浪微博 分享到人人网 分享到豆瓣 分享到鲜果 分享到百度空间 分享到开心网 QQ书签 分享到YAHOO! 分享到Google Google Buzz 分享到Facebook 分享到Plurk Digg delicious Technorati Twitter

Hack Swiffy Runtime

24 十一 2011 In: Flash, HTML5, JavaScript

由於 Google Swiffy 還不斷在修改,也沒有正式文件 很多 API 功能需要自行測試才會知道是否能用 雖然有支援基本 trace 功能,但是訊息都會變成一般字串輸出到 debug console 沒辦法像 JS or HTMLElement 物件那樣可以直接在 console 展開觀察屬性 另外,目前也不支援 ExternalInterface, fscommand 也不能讀取外部資料 可是明明都已經被轉成 JS 卻不能與 Swiffy runtime 外面 js 溝通取得 window, document,感覺這樣很笨 不過呢!測試著 function 時,突然發現以下的 AS 寫法 在轉換為 Swiffy 後,居然能取得 JS Window 物件!

 function getDomWindow():Object{ return (function(){ return this; }).apply(null); } 

有了 JS Window 一切就好辦了 可以直接呼叫 console.log 看看 runtime 裡的 _root 是什麼東西

 getDomWindow().console.log(this); 

Swiffy runtime 的 _root 物件,所有屬性一覽無遺! 接下來,想要在 Swiffy runtime 內與外部 JS 溝通,甚至讀取外部資料 通通有解了吧! 以下示範從外部 JS 控制 Swiffy runtime 播放與停止功能 先在 Flash 動畫內影格 1 加上以下 AS:

 function getDomWindow():Object{ return (function(){ return this; }).apply(null); } var window; if (!window) { window = getDomWindow(); window.runtimeStage = this; } 

輸出 Swiffy HTML 之後 打開

HTML 文件多加上兩個按鈕就可以了

 ... <input type="button" value="stop" onClick="runtimeStage.stop();" /> <input type="button" value="play" onClick="runtimeStage.play();" /> 
分享到新浪微博 分享到人人网 分享到豆瓣 分享到鲜果 分享到百度空间 分享到开心网 QQ书签 分享到YAHOO! 分享到Google Google Buzz 分享到Facebook 分享到Plurk Digg delicious Technorati Twitter