顯示具有 #Homebrew 標籤的文章。 顯示所有文章
顯示具有 #Homebrew 標籤的文章。 顯示所有文章

2011年6月20日 星期一

Dogfan - HTML5+CSS3的「 お父さん扇風機 」

這是將日本軟銀廣告出現過的「 お父さん扇風機 」(爸爸風扇)用HTML5+CSS3再現的小玩意。

[連結]
DogFan @ heroku
玩法很簡單: 接電再按下面的control XD
基本功能有這些:
  • 電力發動: 所以要接插頭開風扇 (點一下插頭就會接電、再點斷電)
  • お父さん: 把風扇開起來就會聽到牠的叫聲喔~
  • 三段變速: 可以改變風扇的速度,3最快1最慢。另有Slider可以細調
目前只support webkit系的Safari和Chrome-完美版是Mac的Safari,Chrome是轉速有差,Mobile版不論是Chrome或Safari都只有主要動畫及接電效果沒問題
下一個會支援的是FF5,應該在FF 5 release前會完成。IE 9就別問我了,大方向是知道但沒library輔助會很痛苦...

[Source]
本Project有Opensource放在github上喔:DogFan的github

授權是MIT。自行轉host或改造前請讀Readme。

[技術細節]
本文的重點。

風扇組成 - absolute positioning + multiple background,因為是我自己切圖+@evenwu作的psd整理得非常不錯所以我是用了最懶的方法切-就是不做trimming只用show/hide去生png  ̄▽ ̄,變成這部分沒甚麼特別的...
唯一要注意的是為了避免rotateZ block了插頭所以扇葉有加pointer-events:none去預防,不過android的chrome好像不太理會?


扇葉轉動 - CSS3 animation on CSS3 transformation。主要是用rotateZ+linear timing function去轉,所以是用animation duration去控制轉一圈的時間-duration愈短風扇轉的愈快...不過有趣的是就算是webkit轉速看起來也有微妙的不同
  • Chrome 11 (Desktop/Mac) - 轉的比Desktop Safari 5快一點 (就是因為這樣才決定用Range Slider)
  • Chrome (Flyer) - 轉的比Desktop Safari更快,快至我懷疑是有偷格...
  • Chrome (G1) - 明顯有lag所以轉不動或是逆走orz
p.s.1 在某些frequency下會有好像Zoetrope的定格效果...
p.s.2 transform-origin不是50% 50%, 有一點offset...
p.s.3 我有懷疑過是floating point problem,因為我是只用三格keyframe就做完整個animation...


神秘的震動效果 - 條件請自行發掘 XD。那個只是同時更改兩個background的background-position (用common來分),數字是亂填但效果很不錯 XD。和風扇一樣的是用duration控制速度,不過因為不配合風扇的轉速去變速不自然及震太快太傷眼所以用了一個mapping function+DOM style interface去設定duration


插頭接合 - jQuery+CSS3 Transition on background-position,jQuery做event handler去轉插頭(還有風扇)的state而trigger transition (最簡單是加class)。用transition做而非animation的主因是我要保留最後的background-position + 效果很簡單懶的用keyframe...compatibility並不在考慮之列 (FF4淚目)


插頭垂下 - 目前只有Desktop browser才會正確Play的CSS3 Animation,因為涉及keyframe轉換timing function加上一開始有改state而試了fill-mode,所以一堆mobile browser不是不會處理就是錯亂了 XD
話說做來是想看的人意識到那是可以點的東西,不過因為是一載入即Play+Playtime短所以不太看到而變成考驗browser能力的東西orz


お父さん - HTML5 Audio。HTML本身已有audio的tag和source,不過沒control和autoplay(和隱形沒兩樣)。聲音是用js播放,不過在iOS上似乎不出來...(可能因為聲音太短,有人提過此事)


Slider - 這個是用HTML5 的Range Input去做。因為一開始是在Desktop上做所以value會在mouse up的一剎那處理。另外為了配合上面的數字(slider左至右: 小至大,但和轉速相反)所以value得要做成負數、min/max的值要反轉放(但step要是正數)、handler也得要用Math.abs去處理value,不過event handler用.val()就可以拿到slider的值倒是很方便。(jQuery rocks!)


和Java port相比這個的技術其實很簡單...而且很好改(如果有用compass.app會更好),時間其實用了去想animation和風扇行為要怎樣才自然-實作只用了3天,除了第一天外其餘都是工餘時間做的...(第一天還有一半時間去和heroku打交道,剩下的在切圖,風扇轉也只是用css去作)

[特別鳴謝]
  • @sillyleo, 風扇圖的原型的作者
  • @evenwu, 巨大版風扇+PSD檔的作者 (很偉大的任人惡搞)
  • @hlb, 音效提供
-以及Twitter(以及plurk)上提供意見的各位 m(_ _)m

2009年7月16日 星期四

FBQuiz Killer - AppHarmonizer 1.0 Pre-Release

拜我Facebook內的Quiz狂熱份子所賜,所以又Update了...

Bookmarklet在此:
AppHarmonizer 1.0 PR

使用方法: 請參考 Bookmarklet使用方法(Delicious) 安裝,之後每次Load Facebook Home時Click一下Bookmarklet以和諧版面

功能

  1. 可掃除已知的Quiz Engine (6個,最後一個Regex Selector可以Extend一下,不過目前無此需要)
  2. 支援自定規則,只要會jQuery Selector就可以了
  3. 僅隱藏無意義的信息主體,可以click看完整Status以及mouseover顯示hide選單永久Block
  4. 支援New post button及Older post button (FF, Chrome, Safari)
  5. 本版本不打算支援IE - 因為這個Bookmarklet超過2048字
  6. 本版本為Pre-Release因為我只在FF 3.5上試過

下一版功能

  1. Reporting
  2. Block App Confirmation Dialog
  3. 方便的Rule修改方案...(可能會想對付某GameApp Engine...)

2009年6月10日 星期三

AppHarmonizer alpha 0.9 Nightly

此處的App指FB App,預設filter已經可以消滅主流FB Quiz App,理論上可以和諧任何App - 只要你會寫jQuery Selector就可以了
這個Script在IE以外又不是特別快的瀏覽器會佔用較高的cpu,非常舊的Safari、Konquueror、Opera會crash browser,請小心使用及注意cpu用量
註:
  1. 目前只在FF 3.5 b4上試過
  2. Opera 7.1, Safari 1.2, Konqueror 3.2-3.3會把瀏覽器炸掉 [參考:Mutation Event]
  3. FF 3.5的CPU load已壓至合理水平,其他browser尚未測試
  4. IE完全沒試過
  5. IE6饒了我吧

[新功能]
  1. 支援New post button及Older post button (FF, Chrome, Safari)
  2. (New) Event鎖加入,自click、Browser event也會run一次
其他功能請參考舊文
[Bookmarklet]
App Harmonizer α0.9(updated)
Bookmarklet使用方法(Delicious)

2009年5月22日 星期五

FBQuiz Killer - AppHarmonizer

因為受不了一打開Facebook就是一堆Quiz,所以作了個bookmarklet給大家在看到有不順眼的Quiz時可以加以隱藏...
[11/6 Update] 新版本: AppHarmonizer alpha 0.9 Nightly
AppHarmonizer (又名FB和諧者) Alpha v0.5 功能
  1. 可掃除已知的Quiz Engine (4個,比起半個月前又多一個)
  2. 支援自定規則,只要會jQuery Selector就可以了
  3. 僅隱藏無意義的信息主體,可以click看完整Status以及mouseover顯示hide選單永久Block
  4. 目前為alpha版所以只能人手按bookmarklet隱藏Quiz (有點像打地鼠...在load完status時按一下bookmarklet就可以了)
  5. 只在FF上測試過,IE的...應該沒問題吧?
  6. 開發用的語系是英文,如果遇到不能擋的請抓個圖留言反映
Bookmarklet在此: AppHarmonizer Alpha
Bookmarklet使用方法(Delicious)

2009年3月15日 星期日

Lazy Twitterholic Test (推特中毒測驗懶人版)

推特(twitter)中毒測驗 (Beta)

因為原文是人手計分太麻煩,所以本喵弄了個懶人版...
目前為Beta版,有問題/Bug請在comment留言或上我的Twitter反映(@vincicat)
原文: 推特(twitter)中毒測驗
[Update 18/3: 字眼修正]
[Update 15/3: bug修正、加入Reset按鈕(*分數不會即時重設)]