2012年4月29日

jQuery naturalWidth naturalHeight 取得原始的大小




簡介

這篇文章主要為作者碰到的一個問題,相信大家都使用過jQuery提供的width及height方法,但是這個方法所取得的大小並非原始的尺寸,那該如何取得正確的尺寸呢?? 

解決方式


其實jQuery並沒有提供這樣的方法,但是我們可以透過javascript的方式取得,使用方式很簡單,在javascript中每個DOMElement都有naturalWidth及naturalHeight兩個屬性,所以如果要使用jQuery取得這個值就直接使用get或[0]將jQuery物件轉回javascript物件在取得該屬性即可,程式碼如下。
var naturalWidth = $("#my_id")[0].naturalWidth; var naturalHeight = $("#my_id")[0].naturalHeight;

後記


其實你喜歡的話你也可以將這個寫成jQuery的函式(jQuery.fu.yourMethod),但這個實在是太簡單了所以作者就沒有將它而外寫成Plugin囉。





2012年4月20日

OpenCV灰階化-使用cvCvtcolor

簡介:
灰階化,是影像處理過程中不可或缺的一部分,很多時候都會用來做為前處理的一部分,那麼我們來看看,在openCV中要如何使用內建的工具來完成呢?

2012年4月15日

網頁設計流行趨勢





網頁設計流行趨勢

作者:Espen Brunborg   翻譯:雷皓漪

      自從Elliot Jay Stocks 嚴肅地告誡我們應該摒棄web2.0的外觀,我們看到了互聯網的巨大改變。互聯網上不再有那麼多水晶按鈕、斜面的邊緣、反射效果、特價徽章、著色鮮豔而粗糙的斜面、斜線的背景版式等。除了那些光滑設計狂熱愛好者,這種轉變已經被大部分人所接受。可是,如果設計和美學照這樣的非常態發展,不久後在另一個趨勢產生之前,這個網頁設計趨勢便會消失。

流行
      那麼,究竟什麼是當下的流行呢?讓我們一起來看看一些最常見的流行跡象吧。流行不難被發現,因為它們通常需要其他事物共同出現來襯托。(這也就是為什麼傳染會如何高效——當和其他物體結合之後,那些看起來獨立的症狀變得更有傳染性。)

      注意:下面的列表並沒有按特定的順序排列,也不代表影響程度,因為它們看起來都差不多。同時注意以下引用的每個例子包含不只一種流行跡象,因為要把它們嚴格分類幾乎是不可能的。

針線效果
      針線手法的出現,通常是因為設計師太多地注重邊框和線,特別是點狀物的多樣性。從點到破折線的微小轉變就表現了一個完整的針型,加上陰影和其他效果使它又有了3D的效果。
      在網頁設計中使用針形的確切目的只可意會不可言傳,但它在一些特定材質的環境下經常得到使用。比較典型的是在織物皮革材質,或是為了營造真實的顆粒感的情況下。我們很難說出針形效果的靈感是從哪裡來的,但是科學家們相信它的產生是過度使用「Skeuomorphism」的結果。

image002.gif
從左上順時針排列分別為: The Journal of Min Tran; Dribbble shot by Mason Yarnell; Dribbble shot by Liam McCabe.  
本文單純分享,摘錄視覺中國網站,如果要更詳細的文章請觀看原文章 http://c.chinavisual.com/2012/04/09/c81551/index.shtml



JavaScript true/false 傻傻分不清楚




JavaScript true/false 傻傻分不清楚

簡介

因該不少剛學JavaScript初學者常常會碰到這個問題,那就是我的if判斷甚麼時候會是true甚麼時候會是false,或著常常看到別人寫的if裡面沒有放置特別的判斷直接if(obj)這到底是甚麼意思呀,看到這些寫法真的會讓初學的人傻傻分不清楚啊!!


本篇就以這些問題為開始,帶領各位了解if判斷背後的秘辛,廢話不多說我們開始今天的旅程吧。

小技巧


在開始旅程之前,先介紹一個小技巧可以把任何值轉換成true或false,這個方法背後等同於if()裡面的轉換,相信大家都用過!這個符號來反轉true/false,例如if(!a == 520),那大家試過兩個!符號嗎?有人說兩個符號不就等於甚麼都沒做!???


先賣個關子,在這邊你只需要知道!!(物件)會回傳true或false,最簡單應用就是可以把物件轉換的true/false值存到自訂變數中,如下
var value =!!null; // value = false

實例


以下幾個例子你認為誰會是true誰會是false呢?
var q1 = undefined; var q2 = null; var q3 = []; var q4 = {}; var q5 = 0; var q6 = 1; var q7 = 999; var q8 = ""; var q9 = "hello"; var q10 = false; var q11 = true; var q12 = new Boolean("true"); var q13 = new Boolean("false"); var q14 = new Number(0); var q15 = new Number(1); var a1 = !!q1; var a2 = !!q2; var a3 = !!q3; var a4 = !!q4; var a5 = !!q5; var a6 = !!q6; var a7 = !!q7; var a8 = !!q8; var a9 = !!q9; var a10 = !!q10; var a11 = !!q11; var a12 = !!q12; var a13 = !!q13; var a14 = !!q14; var a15 = !!q15;

思考一下,並把答案寫在紙上
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

答案是
a1 = false a2 = false a3 = true a4 = true a5 = false a6 = true a7 = true a8 = false a9 = true a10 = false a11 = true a12 = true a13 = true a14 = true a15 = true 你答對了幾題呢!?


答對12題以上的朋友相信你對本篇文章要探討的已經相當了解,接下來要探討的可能你已經了解但你可以繼續閱讀下去,答對8題以下的朋友,接下來的文章你一定要繼續閱讀下去,好的不繼續廢話了,開始解釋囉


在JavaScript中,會等於false的值只會有undefined, null, false, 0, ""這五種,物件類永遠為true,為什麼?別問我規定就是人家訂好的嘛!!
ECMA官方規格說明


注意我剛剛說得,就只有上面幾種值會是false,那我們再一次掃描每一題題目吧
q1 = undefined; 屬五大false類,為false
q2 = null; 屬五大false類,為false
q3 = []; []是一個空陣列,陣列是物件永遠為true
q4 = {}; {}空的物件還是物件,true
q5 = 0; 屬五大false類,為false
q6 = 1; 不屬五大false類,為true
q7 = 990; 同上
q8 = ""; 空字串屬五大false類,為false
q9 = "hello"; 屬五大false類,為true
q10 = false; 廢話請別懷疑這題送分題
q11 = true; 廢話請別懷疑這題送分題
q12 = new Boolean("true"); 連下一題一起看
q13 = new Boolean("false"); Boolean為object永遠為true 
q14 = new Number(0);
q15 = new Number(1); Number類同屬object永遠為true


注意q12~q15,你不是說0跟false是false嗎,怎麼q13,q15答案為true,那是因為使用new方式創建出來的Boolean, Number它們都是Object子類,使用typeof判斷都是"object",而0, false使用typeof得到的結果分別是"number", "boolean"。
typeof 0; // "number" typeof false; // "number" typeof new Boolean("false"); // "object" typeof new Number(0); // "object" 

總結


歸納上面說明的,整理出這個表格

Input TypeResult
Undefinedfalse
Nullfalse
BooleanThe result equals the input argument (no conversion).
NumberThe result is false if the argument is +0, -0, or NaN; otherwise the result is true.
StringThe result is false if the argument is the empty string (its length is zero); otherwise the result is true.
Objecttrue





本篇文章就探討到這邊,如果有任何的問題歡迎留言討論。

jQuery prevUntil nextUntil parentUntil 使用方法




jQuery prevUntil nextUntil parentsUntil 
使用方法

簡介

jQuery提供許多用來遍歷DOM元素的方法,其中用來找尋兄弟元素及父親元素,今天要介紹的是nextUntil,prevUntil,parentsUntil這幾個較不常用(誤><)的方法

jQuery.fn.nextUntil


要使用這個方法首先你必須懂得使用next方法,這個方法是next的加強版,怎麼說呢,next方法只能取得目前節點後的一個元素,而nextUntil則是取得一組元素,這組元素大小取決於你給予的終止點。
簡單的說nextUntil讓你可以取得元素之後一直到終止點路上的所有的元素。


趕快來看個例子吧
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> </head> <body> <dl> <dt id="term-1">term 1</dt> <dd>definition 1-a</dd> <dd>definition 1-b</dd> <dd>definition 1-c</dd> <dd>definition 1-d</dd> <dt id="term-2">term 2</dt> <dd>definition 2-a</dd> <dd>definition 2-b</dd> <dd>definition 2-c</dd> <dt id="term-3">term 3</dt> <dd>definition 3-a</dd> <dd>definition 3-b</dd> </dl> </body> </html>

執行nextUntil()
$("#term-2").nextUntil().css("background-color", "#ff3333");


當nextUntil方法不放任何參數,我們會得到目標節點之後的所有元素。


執行nextUntil("selector")
$("#term-2").nextUntil("#term-3").css("background-color", "#ff3333");

nextUntil方法的selector用來設定終止點,因此會取得一直到終止點路徑上的所有元素。


執行nextUntil(element)
$("#term-2").nextUntil().css("background-color", "#ff3333");

在jQuery1.6版更新中,nextUntil也提供直接使用DOM Element元素當作終止點的方法,我們可以看到它的效果與selector
相似。



jQuery.fn.prevUntil


使用prevUntil的方式與nextUntil一模一樣,只是prevUntil是用來取得該節點之前一直到終止點路徑的所有元素,在這邊就不多做說明。



jQuery.fn.parentsUntil

使用parent()方法會取得該元素的父親節點,那如果要同時取得父親、祖父、曾祖父甚至曾....曾祖父時要怎麼實作呢?jQuery提供一個方法讓我們能夠輕鬆地做到這個功能,那就是parentsUntil,這邊要注意是parents不是parnet歐。


趕快來看這個範例吧
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> </head> <body> <dl> <dt id="term-1">term 1</dt> <dd>definition 1-a</dd> <dd>definition 1-b</dd> <dd>definition 1-c</dd> <dd>definition 1-d</dd> <dt id="term-2">term 2</dt> <dd>definition 2-a</dd> <dd>definition 2-b</dd> <dd>definition 2-c</dd> <dt id="term-3">term 3</dt> <dd>definition 3-a</dd> <dd>definition 3-b</dd> </dl> </body> </html>



執行parentsUntil()
$("#term-1").parentsUntil().css("border", '1px solid #ff6633')



執行parentsUntil("selector")
$("#term-1").parentsUntil("body").css("border", '1px solid #ff6633')



今天介紹的這幾個方法筆者不知道甚麼請況使用最巧妙,如果你有好的idea請不吝告知。


參考資料


http://api.jquery.com/parentsUntil/
http://api.jquery.com/nextUntil/
http://api.jquery.com/prevUntil/

2012年4月10日

Why slowly when access the HTMLCollection Object?



Why slowly when access the HTMLCollection Object?


什麼是HTMLCollection?

HTMLCollection是一個介面,用來表示HTML元素的集合,它提供尋訪元素的方法和屬性。但HTMLCollection與一般陣列是不同的,HTMLCollection是活的,這是甚麼意思呢?這句話的意思是當畫面上的HTML改變時,HTMLCollection會自動的觸發改變,看看下面的例子吧!
// anit-pattern // infinite loop var divs = document.getElementsByTagName('div'); for(var i = -; i < divs.length; i++){ var div = doucument.createElement('div'); document,body.appendChild(div); } 
首先請你不要把這段程式碼實際的執行!!
這個範例透過document提供的函數取得畫面上所有的div元素,並將這組元素存在Local變數上,然後使用一個迴圈加入新的div元素到該組變數上,這樣會產生甚麼問題呢?


就剛剛所說的,HTMLCollection是活的,每次回圈都加入一個新的元素在該數組上,因此divs.length是動態的在改變,所以造成了無窮迴圈。下面是改版過後的程式碼 : 
var divs = document.getElementsByTagName('div'); var length = divs.length; for(var i = -; i < length; i++){ var div = doucument.createElement('div'); document,body.appendChild(div); } 


我們將divs.length緩存到Local變數上,在迴圈中存取這個變數,這樣就可以解決動態改變length大小的問題。

好像還沒談到為何會慢的問題?


我好像還沒談到為什麼會慢的問題!?其實眼尖的人因該已經看出來上面程式碼的一個問題了,我們每次在取得HTMLCollection的資料時,它都是重新query(re-run)的,也就是每次取得length屬行時,它在後面都會重新執行計算個數的方法,再回傳length給我們,在這裡我們把HTMLCollection.length與Array.length屬性作的性能上的比較,如下範例




其結果使用HTMLCollection存取length屬性
firefox慢了15
chrome慢了53
ie上更慢了68倍之多。



解決辦法


1. 把length屬性緩存到Local變數中
2. 把HtmlCollection轉換成Array在處理


在這邊提供一個與native code一樣效果的方法
var arr = Array.prototype.slice.call( htmlCollection );



本文就探討到這邊,如果有任何的問題可以在下面留言討論。

jQuery $.fn.data 與 $.data 效能比較




$.fn.data 與 $.data效率比較

簡介

我們之前在jQuery.data()這篇文章有提到data這個方法的使用方式,jQuery提供了兩種data方法,分別是$.fn.data()及$.data(),在本篇文章中,我們將要探討這兩種方法之間的差異以及效率議題。

jQuery.fn.data()


這個方法讓我們能夠使用selector選取一群節點並對其綁定資料,如
$("div").data('key', 'value');
來解釋一下上面這行程式碼,首先jQuery selector會將所有的div元素選取,並且創建(create)一個jQuery物件,再來呼叫data()方法時,jQuery會先對該節點的data(可能有原先的資料)進行解析(parse),最後將對應key的值放入該節點中。上述步驟依序列出為
Step1. select and create jQuery object
Step2. parse the data
Step3. put the value in the key property

jQuery.data()


這個方法並沒有提供selector的方式進行資料的綁定,我們必須指定一個元素(element)給這個方法使用,如
$.data(document.body, 'key', 'value');
因此這個方法所指定的對象只能有一個,因此我們可以定義這個方法市使用在一個已經存在且定義好的元素上。因此它的執行步驟為
Step1. put the value in the element's key property


說了這麼多我要表達甚麼呢!?


如果你要綁定資料到一個已經定義且存在的節點,那麼使用第二個方法($.data)是最恰當的,如果你還問為什麼那請你看看下面的效能比較結果吧!! (分數越高越好)
你也可以自己測試 : http://jsperf.com/jquery-data-vs-jqueryselection-data/11





這篇文章就探討到這邊,使用data方法時不妨先思考效能的問題,Maybe會是個好習慣。


jQuery Proven Performance Tips & Tricks



View more presentations from Addy Osmani


2012年4月8日

QT開發環境-自動提示指令/指令(程式碼)補完

簡介:
在一些開發環境中,具有非常簡便的功能,他能夠幫助使用者在不需打完程式或指令的情形下,自動提供給可能的選項給使用者選擇完整的指令,亦或是直接補齊,而QT的開發環境中也有此種方便的功能,但是,他在哪設定呢?


開啟流程:
選擇Tools->option,會開出一個視窗,再點選enviroment->keyboard,最後於搜尋欄中打入"completeThis",就會塞選出「TextEditor.CompleteThis」,如下圖:


此後只要在撰寫程式的過程中,按下你所設定的快捷建,就可以跳出了來選項了。


實際成效:



QT建隔一段時間做同一件事-使用QTimer

簡介:
在此用QT時,會有想要隔一段時間就做某件事的情況下,此時我們需要如何才能達成呢?

Extreme JavaScript Performance

2012年4月5日

QT顯示圖片-使用QImage與QLabel

簡介:
在使用QT開發程式時,會有機會想要做一些圖片的顯示,那麼要怎麼顯示圖片呢?還有,要怎麼保存圖片的內容呢?

jQuery iPicture Plugin




jQuery iPicture Plugin

插件需求 : jQuery & jQuery UI 相容性 :  All Modern Browsers 官方網站 : http://ipicture.justmybit.com/ 下載點 : http://ipicture.justmybit.com/download.php

簡介

jQuery iPicture 是一款讓我們能夠在網頁圖片上標註anchor或tooltip的插件,當滑鼠移過去就會顯示一些說明的文字,這個插件最厲害之處在它可以切換編輯模式(modify mode),這樣可省去動手算圖的座標的動作。說麼多或許很難理解,馬上觀看下面兩個範例吧!!

正常模式




DEMO網址 : http://ipicture.justmybit.com/index.php

編輯模式


切換編輯模式非常的簡單,只要將modify參數設為true就會以編輯模式開啟,相反的false就會正常模式顯示。
DEMO網址 : http://ipicture.justmybit.com/options/modify.php

程式碼


$( "#iPicture" ).iPicture({ animation: true, animationBg: "bgblack", animationType: "ltr-slide", pictures: ["picture1"], button: "moreblack", moreInfos:{"picture1":[{"id":"tooltip1","descr":"語文學習中心","top":"119px","left":"428px"},..}]}, // 開啟/關閉編輯模式 //modify: true, initialize: false });


這種ToolTip在網站的導覽以及商品買賣的網站上會十分的有用處,這種臨場感是經典方格子拍賣無法呈現的。


如果你有更好的應用,歡迎在下面留言討論

產品圖示規範化的意義與過程




產品圖示規範化的意義與過程

一、問題引發思考


現在隨著互聯網企業的發展與業務的拓展,隨著時間的推移,一個公司的產品可能將越來越豐富多樣,同樣每一個產品隨不斷的功能完善和擴展,隨著一個產品的「長大」產品內所需要用到的圖標也必然會越來越多,這時候眾多產品形象的呈現、產品內圖標等視覺原素的表現,如何能與整個產品或公司的戰略計劃相適應,這時候在圖形語言的視覺呈現,語義表達、識別性等層面就需要作一個全面細緻的考慮了。
我們來看幾個典型的例子,回顧一下 Adobe 產品系列的成長過程, 從2005年 Adobe 收購了原最大的競爭對手Macromedia公司後,它的產品線得到了極大豐富, 而後在2002年Adobe確立了 Creative Suite概念後,後續的新產品持續推出,龐大的產品線以一種什麼樣的展現方式呈現在用戶面前便成為了一項非常重要的課題。下圖中我大致的列了一下Adobe產品logo的一個進化轉變過程:
產品陣容強大的Adobe帝國在CreativeSuite 3發佈的時候為旗下全部產品Logo進行一個色環劃分圖,很好的呈現出各產品logo的色彩關係和一個完整的用色體系。

我們再看一個例子,Apple公司在2010年和2011年先後將itunes與App store的Logo作出了比較重大的調整,到Max OS Lion版本時,兩大平台級的產品新形象同時展現在用戶Mac的Dock上。雖無準確的官方答案,但從一個是整個Apple產品資源應用來源和一個是娛樂內容來源的的兩個具有類似性質的商業平台產品來看,它們顯然是被Apple寄予相當大期望,在感觀上看來,它們在被賦予更厚重、大氣的形象這一改變,能夠很好的服務於其公司的商業戰略。
另外itunes 10的發布後側欄的圖標全部變成了單色,這一變化我認為是為了突出Store的資源核心區域,強調產品的平台性,和上述的分析一樣,這個視覺表現層面的調整同樣是為了整個產品的資源商業戰略服務的。
那現在回到我們自己的產品,現在「我的阿里」作為一個網商用戶的得力助手,用戶的家,「我的阿里」內容與應用在日益的增長,系統越來越龐大,同樣網站的視覺的圖形語言的整理,解決原來積累已久的視覺表現「亂象」也日益的緊迫。
在「我的阿里」視覺元素整理的第一步,眾多應用圖標是頭一個切入點,我們從圖標的含義,分類,尺寸規格、設計規則,風格表現等幾個方面進行一個整體方向的規劃,總結一套設計指南。
如果你想要查看更多的細節與內容,請至原文出處查看 本文章簡短節錄於 - 有一點 - 阿里巴巴交互設計部 原文網址 : http://www.aliued.cn/2012/03/05/%E4%BA%A7%E5%93%81%E4%B8%AD%E5%9B%BE%E5%BD%A2%E8%AF%AD%E8%A8%80%E8%A7%84%E8%8C%83%E5%8C%96%E6%84%8F%E4%B9%89%E4%B8%8E%E8%BF%87%E7%A8%8B.htm



2012年4月4日

把OpenCV的IpLImage資料放置QT的QImage


簡介:
某些時候,我們會希望能夠在QT的開發環境中使用openCV來處理影像,可是openCV的保存影像內容的資料結構是IpLImage;QT保存影像內容的方式是透過類別QImage保存,那麼這時候該如何做這之間的影像搬移呢?

2012年4月3日

用戶界面設計中「狀態」和「動作」的表達




用戶界面設計中「狀態」和「動作」的表達

簡介

一、問題引發思考
前陣子與同事探討一個小需求時又遇到了按鈕表示「動作」和表示「狀態」間矛盾問題。想想這個問題多年前已經開始討論了,所以在此整理一下思路,與大家共享。
taobao1
具體案例是這樣的:如上圖所示,在「啟用」和「停用」搜索定製功能時,這個按鈕到底是表示「狀態」還是表示「動作」呢?簡單的說,上圖中 1表示當前是停用狀態,還是表示點擊後為停用操作呢?答案顯然是不清晰的。
怎樣能夠清晰的表達兩者的差異,減少用戶的誤解呢?我們首先要從「動作」、「狀態」的定義和兩者的關係入手。
二、什麼是動作,什麼是狀態
動作是指具有一定動機目的並指向一定對象的運動。
狀態指人或事物表現出來的形態
結合來講,動作是促使人或事物改變某一狀態的運動,而狀態是動作造成的結果表現。因此兩者經常是緊密關聯的,有時甚至是互為條件的。
比如「操作收音機」這件事,我需要扭動旋鈕或按鍵等「打開」的動作來打開收音機,當動作完成後收音機的狀態是「打開的」。而「關閉」收音機這個動作的前提,是一個「打開的」狀態的收音機。
」聽起來好複雜阿!「很多人都會這麼認為。為什麼我們在生活中天天面對類似的事卻很少有這樣的感覺呢?

下面來看看生活中的例子我們或許就能理解了。
三、生活中的例子
1、電燈開關


kaiguan1
如果你想要查看更多的細節與內容,請至原文出處查看 本文章簡短節錄於 - 有一點 - 阿里巴巴交互設計部 原文網址 : http://www.aliued.cn/2010/11/07/expression-of-state-and-action-in-ui-design.html

Sonic html5 canvas loader


Sonic html5 canvas loader

簡介

Sonic是一款極小的js類(JavaScript Class),它可以使用來創建客製化的讀取標誌動畫(custom loading animations),它執行一個不中斷的迴圈,就好像一條蛇不斷追著自己的尾巴。 

Sonic使用HTML5的Canvas API來完成的,它在很短的間格中部段的繪製圖形到畫面上,而這個圖形決定於你定義給它的path,首先看一下官方的DEMO

http://padolsey.net/p/Sonic/repo/demo/demo.html

範例一 - 正方形

<!doctype html> <meta charset="utf-8" /> <title>Sonic</title> <style> </style> <body> <script src="../src/sonic.js"></script> <script> var square = new Sonic({ width: 100, height: 100, fillColor: '#000', path: [ ['line', 10, 10, 90, 10], ['line', 90, 10, 90, 90], ['line', 90, 90, 10, 90], ['line', 10, 90, 10, 10] ] }); square.play(); document.body.appendChild(square.canvas); </script> </body>
在這個範例中,我們創建了一個Sonic類別,並給予高度、寬度、顏色以及最重要的路徑屬性,path是一個二微陣列,我們將要移動的路近以這樣的格式寫入
['line', startX, startY, endX, endY]


詳細模式可以參考HTML5相關解說了解
http://www.html5canvastutorials.com/tutorials/html5-canvas-lines/


創建完畢後,我們將Sonic放置到我們的畫面上,並且啟動(play)。



範例二 - 繞圓圈


在Canvas中,如果要畫曲線(橢圓、圓、拋物線等),使用的是arc這個屬性,下面範例中會產生一個不斷繞著圓圈的讀取標示
var circle = new Sonic({ width: 50, height: 50, padding: 50, strokeColor: '#000', pointDistance: .01, stepsPerFrame: 3, trailLength: .7, step: 'fader', setup: function() { this._.lineWidth = 5; }, path: [ ['arc', 25, 25, 25, 0, 360] ] }); circle.play(); document.body.appendChild(circle.canvas);

附註 : 額外參數說明


Path 參數

['line', startX, startY, endX, endY]

['bezier', startX, startY, endX, endY, cp1x, cp1y, cp2x, cp2y]

['arc', cx, cy, radius, startDegree, endDegree] (degrees, not radians!)

Create 參數

Options that you can pass to new Sonic({...}) include:

path

An array which defines the path taken by sonic. Look at the square example above. Each array item is an array with the format [methodName, arguments...], with the available methods specified above (line, bezier and arc).

width

The pixel width of the canvas (note: not including padding)

height

The pixel height of the canvas (note: not including padding)

padding (default: 0): The pixel padding.

fillColor

The canvas' context's fill color (e.g. red, rgb(255,0,0), #F00)

strokeColor:

The canvas' context's stroke color (e.g. green, rgb(0,255,0), #0F0)

fps (default: 25): 

How many frames per second. More fps means smoother animation and sonic will progress through the specified path quicker. Less frames means the opposite. There shouldn't be much need to change this.

stepsPerFrame (default: 1): 

This integer specifies how many steps of an animation should occur on each frame.

pointDistance (default: .05):

 The distance between points (0..1) in each path (that is, each sub-path under the main path). If you draw a line, and set the pointDistance to 0.1, then there will be ten steps in the animation (ten points).

trailLength (default: 1): 

The length of sonic's trail (0..1). A length of one means that it's like a snake trying to eat its own tail.

step (default: "square"): 

A function OR a name of a function found in Sonic.stepMethods. This function will be called on every step of the animation. See below (under "more control") for more info on this function.

domClass (default: "sonic"): 

A class to be applied to the  element.


ShareThis