Skip to main content

Titanium APP with PureMVC & CoffeeScript


昨天一時無聊研究起最近很紅的 CoffeeScript,小試結果不禁有種相見很晚的 fu....Jeremy Ashkenas 你實在是太棒啦!!!!!


先前使用 Javascript 來寫 Titanium APP 的時候最大的問題還是來自於 Javascript 是個易學難精的語言,debug 不易,怎麼寫好像都沒問題但是跑出來的結果就是很神奇, Class 的實作也是百百種....雖然先前 文章分享的:PureMVC for Titanium Mobile 簡單實作了 PureMVC 供 Titanium 使用,不過實際操作時還是會覺得有點彆扭。

CoffeeScript 講求的就是採用 Javascript the Good parts,在不影響效能的轉換下,保證轉出來的 js 都是優良的,更重要的是它的類別實作....各位朋友們啊!這個才叫類別啊!!!(淚奔)

秉持著哪裡都要用 PureMVC, 即使改用 CoffeeScript 也不例外
以下原始碼皆可以在本人的 github 找到。

在這邊貼一段 Titanium APP with PureMVC & CoffeeScript 的實作:
為了怕 混亂 Global scope, Puremvc 還是包覆在 Puremvc 的 namespace 下

#引入 puremvc
Ti.include "puremvc-coffee-1.0.js"

trace = (s)->
Ti.API.info s

trace "Hello coffeescript with puremvc."

#利用工廠方法建立 MainWindow 方法
MainWindow = ->
win = Ti.UI.createWindow
title: 'Tab 1'
backgroundColor: '#fff'

label = Ti.UI.createLabel
color: '#999'
text: 'Hello Coffeescript & Puremvc'
font:
fontSize: '20dp'
fontFamily: 'Helvetica Neue'
textAlign: 'center'
width: 'auto'

win.add label;
win

# MainWindow 用的 Mediator
class MainMediator extends Puremvc.Mediator
listNotificationInterests: -> ["Hello"]

handleNotification:(note)->
trace 'MainMediator got "Hello": ' + note

onRegister:->
trace 'Mediator onRegister.:' + @getMediatorName()
# get view component
@getViewComponent().open()

#主要由 StartupCommand 註冊 MainMediator
class StartupCommand extends Puremvc.SimpleCommand
execute:(note)->
trace 'startupCommand executed!!!'
@facade.registerMediator new MainMediator 'MainMediator', new MainWindow()
# to MainMediator
@sendNotification "Hello"

最後:

setTimeout( ->
Puremvc.facade.registerCommand 'startup', StartupCommand
Puremvc.facade.registerProxy new DemoProxy 'DemoProxy'
Puremvc.facade.sendNotification 'startup'
200)


Edit:
為了怕大家不清楚如何在 Titanium Studio 中使用 CoffeeScript ,在這邊提供一個中文說明:請參考高見龍的 在Titanium Studio使用CoffeeScript來寫app

Edit2:
關於如何在 Titanium 中使用 CoffeeScript 也可以直接安裝好 CoffeeScript 後,直接利用 Titanium 下拉是功能表 / Commands / CoffeeScript Bundle 執行 Compile and Display JS,不需要真的安裝 Titanium plug-in

Comments

Popular posts from this blog

[AIR] JoSiResize - Mobile 開發小工具

JoSiResizev0.6.0,Adobe AIR 3 runtime之前開發 tool app 的時候並沒有很深刻的體認到圖片素材的 resize 是一個很麻煩的事情...畢竟圖片使用量並不大,等到開發遊戲類的 app 才發現光處理不同螢幕尺寸的圖片素材是一個相當折磨人的工作。
因此 JoSiResize app 誕生了~~~原理是採用最小 scale 長寬比例不變的方式進行放大縮小。使用方法非常簡單,設定好變更的尺寸,接下來,將需要處理的圖片檔案全選直接拖曳到視窗內,畫面即會跳出預備儲存的檔案夾選擇畫面,確認後即開始轉檔。

PureMVC for Titanium Mobile

為了秉持著哪裡都要用 PureMVC 的想法,試著修改 PureMVC 官網上提供的 Javascript 版本給 Titanium 使用。
**source code**
有任何問題請上:Titanium Mobile 中文開發者論壇

建立 instance 的方法:使用 Puremvc 為 namespace
Ti.include('puremvc-js-1.0.js');
var c = Puremvc.clone( Puremvc.SimpleCommand );
var p = Puremvc.clone( Puremvc.Proxy, "TestProxy", "This is TestProxy's data" );
var m = Puremvc.clone( Puremvc.Mediator , "MainMediator" );

[Unity] erinylin.lazylib - Cookie for PlayerPrefs

有鑑於 PlayerPrefs 測試與版本更新問題,將大家都愛用的 PreviewLabs.PlayerPrefs 打包起來,製作重點還是以懶人為主,基本上 PlayerPrefs 資料更新與數量並不可能會有強烈衝擊效能的狀況產生,所以為了方便開發,就弄了一個視覺化工具,方便除錯用。

雖然 PreviewLabs.PlayerPrefs 作者都宣告放棄他們的版權,不過為了尊重程式,僅僅加入了兩個公用函式,其他並無更改。

內有:
Cookie ManagerCookie 用 DataObject 混合編輯 ScriptableObject執行階段除錯視窗工具當然還是有懶人常數檔案輸出資料版本控制,方便更新版後儲存資料更新功能其實很多,有興趣的請自行到 Github 下載並參考範例吧!