Titaniumでhiresなリモート画像をキャッシュするWidget作った

経緯

そもそもImageViewはリモート画像を自動でキャッシュしてくれるのだけど
hiresプロパティを設定した途端、うまくキャッシュ出来なくなってしまう

対策

一応キャッシュファイル自体は@2xな名前で作成してくれてる様なので
キャッシュファイルが存在する場合はそれを読み込む様にした

ついでに

プロフィール画像みたいな、普段はキャッシュしておきたいけど変更する時もある場合用に
キャッシュをクリアしたり、明示的にキャッシュするメソッドも追加した

github

そんなわけで
プロジェクト名はこんなんでいいのか
coffeeScriptのままでいいのか分からぬままgithubにあげてみた

https://github.com/ma2kubo/ma2.cachedImageView

iosでしか試してないのでiosのみの設定にしてあるけど androidでも使えるかも?(てきとー)

使い方

<Widget id="imageView" src="ma2.cachedImageView"></Widget>   
$.imageView.image = "http://hoge.com/hoge.png"

中身

こんな感じでapplyPropertiesしてるのでtssも反映されるはず

args = arguments[0] or {}
        
delete args.id
delete args.__parentSymbol

$.imageView.applyProperties args

同じくこんな感じにしたのでイベントも反映されるはず

exports.on = $.imageView.addEventListener
exports.off = $.imageView.removeEventListener 
ちなみにキャッシュの場所メモ
Ti.Filesystem.applicationDataDirectory + "../Library/Caches/"