沒穿方服

封存

顯示╱隱藏內文
無限回廊
↑點他會被吸去官網

稍微玩了 PSP無限回廊。遊戲內容請看官網的「概要 - 基本法則」馬上就會懂。

這遊戲簡化得很不客氣,從原作(九州大學研究員藤木淳的互動軟體 OLE Coordinate System,可視為簡易的無限回廊場景編輯器)的 5 種錯視開始,設計 solo, pair, others 三種過關規則和 100 多個關卡構成遊戲,其餘就不過度製作了。沒有算分數,沒有故事背景,只有回廊讓你一直旋轉畫面、一直過關而已。

精簡很好也很符合時代潮流,可是結果好像變成題庫遊戲了,沒有一個意圖把回廊串連起來。

……好處是想玩就玩、想停就停,隨時稍有不適,大可以“主觀的跳關”或“主觀的關機”也不會有負擔和牽掛。

簡單的音效功能,應該沒人想自己寫吧。
先看幾個現存可用的:

  • Audio Engine

    就是 Scriptaculous 的 sound.js,單純地產生 <embed> 來發聲,在 ie 使用 bgsound,其他瀏覽器則仰賴 QuickTime 支援。可做 track 控制及全域 enable/disable 的切換;再移植版 jQuery 的 jquery.sound.js 還可設定 timeout 將產生的 <embed> 移除。

    $.sound.play( '/path/to/some.wav' , {track: "track1";} );
  • JSSoundKit (Javascript Sound Kit)

    透過 ActionScript 的 ExternalInterface,寫出一個 proxyMethods 方法來操作 Flash Sound 物件。功能自然也跟 ActionScript 2.0 的 Sound 類別一樣。

    var mysound = new Sound();
    mysound.loadSound('/path/to/some.wav' , true);
  • SoundManager2

    同樣依靠 flash,但它是再設計封裝過的、更完整的 API,也比 JSSoundKit 穩定可靠。壓縮後約 18 kb 說龐大難養也不至於。

    soundManager.play('mySound','/path/to/some.mp3');


※以上僅介紹我試用過的,當然有其他選擇,例如 MooTools 用的 mooSound


最後我懶得探索,於是自己寫了 jQuery plugin:flashSound,測試一下還算堪用,不過它只有最基本的功能(包括停用音效),可以發出登登登的聲音,但是要做歌曲播放器的話,很勉強喔。

詳細使用方面,接受兩種風格的寫法,其之一:

$.flashSound( 'foo.mp3', {id: 'se1'} );     // 讀取聲音檔(還不會播放),並將物件命名為 se1
$.flashSound.play('se1');                   // 播放
$.flashSound.play('se1', true);             // 播放,但先停止前一個播放的聲音
$.flashSound.stop('se1');                   // 停止播放
$.flashSound.remove('se1');                 // 移除 flash 物件

或者

var se1 = $.flashSound( 'foo.mp3' );   // 讀取聲音檔
se1.play();                            // 播放
se1.play(true);                        // 播放,但先停止前一個播放的聲音
se1.stop();                            // 停止播放
se1.remove();                          // 移除 flash 物件
// 請留意若在 se1 建立前呼叫 play, stop,會發生「物件沒有該方法」的錯誤。

另外全域啟用╱停用音效的方法是:

$.flashSound.enable();        // 全面啟用 flashSound
$.flashSound.disable();       // 全面停用 flashSound


下載、測試請至 flashSound 首頁參觀。

我不排斥做個 有恩必報的男子

縱使是在這種情況下……

我能記得歷史上每一天的造訪次數

這個頁面用來整理此 blog 用到的網頁素材來源,以後也會不定期更新。


  1. IconBuffet(圖示)

    這邊的 icon 會不定期發給會員,個體會員也可互通有無(但每月有限制交換點數),再加上每一套 icon 都有主題和交換價格,會給人東西特別有價值的感覺。
    授權方面,只要不提供給別人下載,一般都不會有問題。

  2. ザ・マッチメイカァズ - THE MATCH-MAKERS(音效)

    收藏 1600 個以上的音效,因為管理人 OSA 對遊戲音效(効果音)特別有興趣,所以素材也以遊戲用途為主。

    另一特色是講求輕鬆愉快地使用:商用、黑暗、不貼連結、不標作者 基本上都 OK;只要轉載、發佈、直連、修改再發佈、再授權(著作權仍屬於作者)這些常識的東西不要冒犯即可。

  3. TAM Music Factory(音效)

    有提供各種聲音素材,不過我只用到音效而已。
    授權方面,健康的個人 blog 使用是沒問題的,其餘請參閱素材利用規定吧。

水牛標誌 - 取自 wikipedia

我把 Carabao(คาราบาว)視為自己的第一個搖滾啟蒙團,之前也愛聽吵吵鬧鬧的東西,不過這裡又開啟一串新的探索,不失是個令人喜悅的經驗。

他們是 1976 年組成的老牌泰國樂團,至今 32 年了仍在活動中,累積的錄音專輯、選輯、現場、個人專輯加起來不下 100 張,看看這龐大的專輯封面串吧(尤其 269 號疑似 box set 的東西,真的是個箱子啊)。他們的歌被歸類為「phleng pheua chiiwit(เพลงเพื่อชีวิต, songs for life)」—— 以人生、生命為主要內容的流派。聽覺上很重旋律,可以當流行歌聽,但請留意摻雜泰國東北民謠和拉丁節奏的「3 Cha」曲風,還有幾首精妙動人(借下面龜壁電台的形容)的優美歌曲。

先看看別人的介紹:

  1. 【龜壁電台】第十七集:泰國製造 :就是這篇文章帶我入門的。
  2. Carabao Band History :官方網站刊的樂團歷史,另有日文翻譯版
  3. Carabao (band) - Wikipedia :Wikipedia 上的樂團介紹。
  4. Just how cool is Ad Carabao? - Ajarn Forum :或者像 A sing-a-song at thai-blogs! 等文章,指出 Carabao 一點也不酷、Carabao's sold out、「唱 Made In Thailand 自己卻愛用 Levi's 和哈雷機車」、「唱 Lung Khii Maw(酒鬼大叔)卻販賣自己的同名機能飲料到窮人手上」、……,聽起來真是挺糟的。

說真的我所知有限,除了心得就只能分享第二手資料。以下跳著看他們的作品,然後就結束這篇文章吧。

  • 1981 Lung Khii Maw(ลุงขี้เมา - 酒鬼大叔)

    首張專輯的作品。描述一名基層份子由農民轉為受壓榨的勞工,一世人像水牛一樣苦幹,老來卻只能讓酒精毒死自己的悲歌。參考歌詞翻譯(日本語) (其實 25 年前的版本比較香醇,可惜找不到試聽。) 
    作曲是以菲律賓民謠(創團成員在菲律賓唸書)為基礎,後來 Aed 自己作曲,這樣的歌就比較少見了。

  • 1982 Ganja(กัญชา)

    Ganja 就是大麻。2001 年的 INTER 專輯 Carabao 選了自己的經典作品外銷,裡面就收了這首歌的英文版,讓我們不用翻譯也知道在唱什麼。參考歌詞翻譯(日本語)

  • 1983 Wanipok(วณิพก)

    這張專輯奠定了 Carabao 在泰國國內的天團地位。Wanipok 亦是他們 3 Cha 風格的代表曲。
    喫這首歌很適合先純欣賞音樂,有興趣再看歌詞翻譯

  • 1984 Made In Thailand(เมดอินไทยแลนด์)

    帶給泰國境內莫大影響,也讓他們在國際上建立知名度、流行起來的專輯。介紹還是看那篇泰國製造吧,參考歌詞翻譯(中文日本語)。 這首代表作在 1986 的選輯有英文版 MADE IN THAILAND IN U.S.A.、1997 的 Senthaang Saai Plaa Daek(เส้นทางสายปลาแดก - 魚醬之路)專輯搞了 remix;到了 2003(佛曆 2546 年)更是把整張專輯「重新製作」,就是想留下最好的作品傳世吧。

  • 1984 Bua Loy(บัวลอย)

    這首經常是演唱會的壓軸曲(根據 Live 專輯的曲目)。先說到 Thuek Kwai Thui(ถึกควายทุย)第一首 Aed 作曲的歌的標題,從首張專輯起就不時出現在曲目列表,其實是以相同人物為主角的長篇敘事曲,到 1990 年 Haam Chot Khwaai(ห้ามจอดควาย - No Buffalo Parking)專輯的完結篇為止共作了 10 集,Bua Loy 正是第五集,紀念主角一位戰死的摯友 Bua Loy。參考歌詞翻譯(日本語)、影片 Bua Loi! (YouTube)。

  • 1985 Ameerikooi(貪婪的美國人)專輯

    這張和 1998 的 Ameerikan Anthaphaan(อเมริกันอันธพาล -卑鄙的美國人)都是看名稱就能猜到內容是反美帝壓迫的聲音。到了 2000 年,別說只會醜化外國人,Siam Loo Teu(เซียมหล่อตือ - 暹羅豬)專輯痛罵的對象就變成貪腐的同胞囉。

  • 1986 Prachaathippatai(ประชาธิปไตย - 民主)專輯

    專輯推出時民主意識正高漲,歌曲寫出人民爭取權益的種種。

  • 1987 Welcome to Thailand 專輯

    促銷泰國觀光節用的推廣觀光歌 Welcome to Thailand (YouTube)。
    這張專輯有一首 baap boorisut(บาปบริสุทธิ์ - 天真的罪)描寫男女相戀到結婚失和,卻是無知子女受害的事,參考歌詞翻譯(日本語),也是一首旋律優美的歌。

  • 1988 Thap Lang(ทับหลัง - 楣石)專輯

    當時發生一起古寺楣石失蹤,後來卻出現在美國博物館的事件,參考 Don Schumann 這篇文章後半的備受爭議的楣石。可想而知,立刻被 Carabao 拿來做文章了。
    另外這張專輯之後,樂團成員幾乎全部解散。

  • 1993 Chaang Hai(ช้างไห - 大象輓歌)專輯

    繼 1992 的 Satcha 10 Prakaan(สัจจะ ๑๐ ประการ - 十誡)專輯幫政府宣傳省水以度過缺水危機後,這張則講述人與自然、非物質的內容。包括之前我試著翻譯的那首 แร้งคอย (reeng khooi, 禿鷹等待著)

  • 1994 Khon Saang Chaat(คนสร้างชาติ - 建國者)專輯

    一張民族愛國專輯。其中一首 Laoug Por Koon(หลวงพ่อคูณ - 龍莆坤)是佛像雕刻師寫給 Carabao 的關於高僧 龍莆坤大師的暢銷曲,參考歌詞翻譯(日本語)。

  • 1995 Haak Huacaj Jang Rak Khwaaj(หากหัวใจยังรักควาย - If You Still Love Buffaloes)專輯

    舊成員為了 15 週年而暫時聚首錄音(註:幾年後主要成員還是有歸隊的),比較代表性的歌是 3 Cha Carabao(สามช่าคาราบาว)、ลูกรอ;還有聲援翁山蘇姬的 Aung San Suu Kyi(อองซานซูจี)。

  • 1997 Che Yang Mai Taai(เช ยังไม่ตาย - Che 還活著)

    開頭就是英文版的 Aung San Suu Kyi (YouTube),還搬出切·格瓦拉等英雄人物。到這裡還覺得 Carabao 是很激烈的。

  • 2001 Sao beer chang(สาวเบียร์ช้าง - 象啤姑娘)

    我非常討厭爛偶像幫商品代言。
    Carabao 就為 Chang Beer(象牌啤酒)做了這事…… 這時期政府禁止部份夜間營業,便有幾首歌對政策提出意見。此外也寫了一首 เดือน 9 เช้า 11 是為美國 911 事件的追悼。

  • Mae mai muay Thai

    在台灣也可能有人聽過,因為它是電影拳霸(Ong Bak)的片尾曲,收在 OST – Khunsuk 專輯。傳統泰拳現場是有吹打奏樂的,但不像這首歌那麼歡樂就是了。

  • 2000 Lueang Hang Khao(เหลืองหางขาว)Aed 個人專輯

    SARS 危機時期,Aed 帶頭把政府要銷毀的鬥雞藏起來,並帶著這張專輯向政策對抗…… 後來「保護鬥雞(的價值)」似乎也變成他的一門生意。參考《彭博社》防範禽流感 WHO聚焦亞洲的首段。

  • 2005 Sub Narmta Andaman(ซับน้ำตาอันดามัน - 淚水安達曼)聯名專輯

    收錄於 2004 年底南亞海嘯發生後,Aed 以援助難民為目緊急發起的公益專輯。 參考歌詞翻譯(英語)或一小段中文譯詞在這裡

  • 2006 Rud Charn Tum Narn Tee Loke Luem(รัฐฉาน ตำนานที่โลกลืม - Shan State)Aed 個人專輯

    專輯聲援還在抵抗緬甸的撣邦軍隊:泰國知名歌星 Add Carabao為撣邦(Shan State)的復國大業而唱,裡面影片的歌就叫 ฉานสเตท(Shan State)……緬甸跟撣邦好像都在泰國旁邊而已…… 在 Just how cool is Ad Carabao? 第一篇便是相關訪談。

犯了不易察覺的錯誤:

使用 innerHTML 動態產生 flash 物件(object / embed)然後插入頁面,影片裡用 ExternalInterface.addCallback(ActionScript 3.0)公開給 JavaScript 的函數,在 ie 6 上會找不到。

問題點在以下片段:

var obj = document.createElement('div');
obj.innerHTML = '<object (略…)><embed (略…) /></object>';
document.body.appendChild(obj);

想重現的話,我寫了簡單的原始檔放在這裡(DivShare),別忘了要用 ie 開才能得到最佳瀏覽效果。

解決辦法是把 innerHTML 那行寫在最後,變成:

var obj = document.createElement('div');
document.body.appendChild(obj);
obj.innerHTML = '<object (略…)><embed (略…) /></object>';

結論,在 DOM 元素實際被加進頁面之前,ExternalInterface 不是不會生效(前面沒提到,ExternalInterface.call 會在 appendChild 之前就 call 了……),但是 ExternalInterface.addCallback 會碰到未知的問題。

我寫了一個名字很奇怪的 jQuery plugin,用途跟所謂的 JavaScript Typewriter(打字機效果)相似,就是把頁面內容逐字顯示出來。

這類效果曾經被大量濫用,所以現在很容易帶給用戶落伍的瀏覽體驗。至於我則是把目標放在 Web Game 或類似的網頁,做對話框的顯示之類的。

可以做這樣的事喔(只是擷圖)

理想狀況是用 HTML 寫好對話內容,然後套用 msgPlay(options) 就能得到包括斷句、分頁控制(也是先由 HTML 內容指定好)的效果。

具體檔案在 Google Code 下面的 msgplay,另外說明文件和範例在 msgPlay 首頁msgPlay Demo Page

目前最大問題是在 Opera 上播到元素節點之後就不會「逐字」顯示了,我還找不出原因Opera 9.5 已無此狀況)。還有就是 msgPlay 這個有點不知所謂的命名…… 我還真不知道該改成什麼。