### 2.1 示例長廊
示例長廊可以讓你瀏覽包含在Kivy安裝路徑里面的許多例子。這些例子包括:
* 包含在examples/路徑的示例展示了各個庫的獨有的能力和Kivy的特色。
* 包含在examples/demos/路徑里的示例則展示樂很多Kivy的功能。
另外有更多的Kivy程序:
* 貫穿Kivy應用程序完成開發的教程。
* 在源代碼子路徑kivy/tests/里面的單元測試也是有用的幫助。
我們希望你在學習Kivy的道路上是充滿快樂和激情的!
#### 1) 3D旋轉的猴子腦袋
這個例子展示了利用OpenGL渲染的一個旋轉的3D猴子腦袋。它加載了一個Blender OBJ文件,著色器使用OpenGL's Shading Language(GLSL)語言寫成,并利用了預定的回調功能。
monkey.boj文件是從Blender(一個3D制作軟件)中導出的OBJ文件,該文件以文本的方式列出了頂點和臉部數據,同時被objloader.py文件中的一個類加載。simple.glsl文件是一個利用GLSL編寫的簡單的頂點和碎片著色器。

#### 2) 部件動畫
該示例展示了如何將多部分的動畫應用到一個按鈕部件上。當你點擊按鈕的時候,你將會看到按鈕標簽*plop*會以動畫的方式進行移動。

#### 3)應用程序生成器的組合
這個例子展示了啟動一個應用程序的不同方式。如果你在命令行運行它,而沒有帶任何的參數,你將會在終端上看到一個菜單;你也可以添加一個*'r'*參數來運行它。有許多日志選項來使得調試更容易,程序的執行順序可能更清晰。每次你在命令行運行程序,僅有一個Kivy應用被創建。
該示例使用了testkvfile.kv和app_suite_data/testkvdir.kv文件。

#### 4)使用build()+return的應用程序示例
如果你在build()中返回了一個部件,或者你設置了self.root,那么一個應用程序被創建。

#### 5)從一個.kv文件中創建應用
該示例展示了在你的應用程序中如何暗中使用一個.kv文件。你在運行時將會看到一個全屏的標簽為*'Hello from test.kv'*的按鈕。
當Kivy實例化App的一個子類后,它會暗中搜索一個.kv文件。因為APP的子類的名稱是TestAPP,所以test.kv文件會被選中,這意味著Kivy會嘗試著加載文件test.kv,該文件包含了一個根部件。

#### 6)在模板路徑中的一個.kv文件中加載應用程序
這個示例展示了如何改變.kv文件的路徑。你將會看到*'Hello from tmplate1/test.ky'*作為一個按鈕 的標簽。
由于Kivy實例化了App的子類TestApp,則變量kv_directory會被賦值。Kivy會在該路徑中暗中搜索一個.kv文件以匹配子類的名稱,查找template1/test.kv文件,該文件包含著根部件。

#### 7)攝像頭示例
這個例子展示了攝像頭的簡單應用。它顯示了一個帶有標簽為*'play'*的按鈕的窗口,按鈕用來控制打開或關閉攝像頭。要注意如果沒有找到攝像頭,則首先查看一下gstreamer模塊有沒有安裝,Kv語言在處理過程中會拋出一個異常。

#### 8)貝賽爾曲線示例
這個例子展示了如何從一個多邊形計算出的貝賽爾曲線。你將會看到一個紫色的多邊形以及由次計算出來的紅色的貝賽爾曲線。你可以拖動滑塊來重新計算曲線。

#### 9)畫布渲染強度測試
這個例子通過繪制巨大數量的小方塊來測試我們的圖形引擎的渲染表現。

#### 10)橢圓示例
這個例子練習繪畫出Kivy的logo。屏幕上方的滑塊控制著繪畫的開始、停止、寬、高等。*Reset*按鈕用來重置滑塊。Logo圖標圖片從kivy/data路徑讀取,整個例子使用kv語言描述。

#### 11)FBO示例
這個例子展示了使用FBO(Frame Buffer Off-screen)代替一個平的畫布的布局。你可以看到一個黑色的畫布和一個按鈕。點擊按鈕將會使它左右移動。

#### 12)平滑線條實驗
這個例子展示了平滑線條關于快速渲染線條方面的特征。你將會看到多個線段構成的路徑和一些控制按鈕及滑塊。你能添加新的點到線段上,也可以改變線的寬度和透明度;或者點擊*Animate* 來展示一系列的sin和cos動畫。
另外"Cap"和"Join"按鈕是無法工作的,因為平滑線條還沒有實現這個特色。

#### 13)線條擴展演示
這個例子展示了如何使用擴展線調繪圖,諸如橢圓、圓、矩形等。你將會看到帶有標簽的各種形狀。

#### 14)網眼測試
這個例子展示了使用網眼模式來變形一張圖片。你將會看到一排按鈕在畫布的下方。點擊他們將會顯示通過mesh.mode設置的方式來改變這張圖片。

#### 15)多重材質
這個例子混合了兩種材質:一張字母K的圖片mtexture1.png和一張橘黃色圓的材質mtexture2.png。你將會看到一個橘黃色的K剪貼到一個圓上。它使用了定制的使用GLSL(Opengl Shading Language)編寫的著色器。
要注意的是mtexture1.png是一個白色的透明背景的K。

#### 16)圖片的平鋪
這個例子展示了字母K的圖片會在屏幕上平普。你首先會看到8行8列的字母K,同時一個標簽來顯示當前的尺寸。你可以試著改變窗口的大小,它仍保持8行8列。
要注意的是mtexture1.png是一個白色的透明背景的K。

#### 17)旋轉的例子
這個示例使用PushMatrix和PopMatrix來旋轉一個按鈕。你將會看到一個標簽為*Hello World*的按鈕旋轉了45度角。

#### 18)漏字板演示
>gthank:具體例子還沒有測試,感覺有點像PS中的蒙板
這個例子是一個關于漏字板試圖部件的漏字板圖形指令的測試,當你使用了漏字板,那么在它的邊界外面看不到任何東西,所有的圖形僅能在漏字板內部顯示。
你可以通過Touch和Draw的指令來添加一個漏字板試圖。Touch down會指定它的位置,而Drag會指定它的尺寸。

#### 19)Tesselate展示
>gthank:Tesselate應該叫嵌飾什么的,不知道如何翻譯好
這個例子展示了關于嵌飾多邊形的庫的運用。你將會看到一個空心的矩形和一些控制按鈕。你可以點擊或拖拽來創建額外的形狀,注意觀察頂點的數目和屏幕上的元素。*debug*按鈕來切換以不同的顏色來顯示網格。

#### 20)材質的包裹和坐標示例
這個例子展示了如何改變材質的屬性以及材質父容器的屬性。你可以看到多彩的材質圖片和一些控制部件。texture_example_image.png圖片被渲染到一個矩形中。滑塊改變材質的拷貝數目以及矩形的大小;當在矩形中的材質多于一個時,點擊按鈕來改變材質如何被渲染。

#### 21)攝像頭的洗牌模式
這個例子使用了帶有打開了攝像頭的Scatter部件,你將會看到一個混亂的帶有攝像頭反饋的矩形網格。你可以拖拽矩形邊框來查看有序的攝像頭,或者雙擊再次對網格進行洗牌。

#### 22)Kivy Catalog
Kivy的Catalog視圖部件允許交互筆記Kivy語言代碼,并獲得立即的更新。有可以看到兩個面板,左側的包含著.kv代碼,右側的窗口對這些代碼進行渲染。你可以在左側對代碼進行編輯,右側進行渲染。當你使用spinner button菜單時,改動將會消失。Catalog部件將會為你展示多個控制著不同部件和布局的.kv示例。
當每一個菜單選項的接口在containers_kvs路徑中設置好后,Catalog接口被設置在kivycatalog.kv文件里。要添加一個新的.kv文件到Catalog中,可以添加一個.kv文件到container_kvs路徑并且在kivycatalog.kv文件的ScreenManage代碼段中渲染它。

#### 23)多次碰撞檢測展示
該應用程序記錄形狀并且試圖在數據庫中匹配它們。你將會看到一個空的畫布接口和一些控制按鈕。當你畫了一個形狀后,該形狀將會被添加到歷史記錄中,并且嘗試進行匹配。如果你打開了gesture的歷史表,并且添加它到數據庫,則以后再畫出的這個形狀將會被識別。你可以在.kg文件中保準和加載這些形狀數據。
該演示代碼跨越了多個文件。其中彈出的('No match')信息來自helpers.py文件。
歷史窗口被historymanager.py文件管理,并使用了historymanager.kv文件來描述。
數據窗口和存儲被gestureDatabase.py文件管理,并使用了gestureDatabase.kv文件描述。
滑塊和按鈕的邏輯在settings.py文件內,并使用了settings.kv文件描述;但是實際的設置和管理在multistroke.kv文件內。

#### 24)基本圖片視圖
這個例子展示了使用scatter部件。你將會看到3個圖片框架,你可以點擊和拖拽、拉伸和旋轉這些圖片。
當kivy/data/images/background.jpg這個背景圖片顯示后,一些照片將從本地的圖片路徑中加載。pictures.kv文件描述了接口,shadow32.png文件是圖片的邊框,以使得這些照片看起來像是在一個圖片框里。最后,android.txt文件被用來打包為Android應用程序。
對于Android設備,你可以拷貝這個路徑到你的手機上的/sdcard/kivy/pictures位置。
這些圖片可以在https://archive.org/details/PublicDomainImages獲取到。

#### 25)動態著色器編輯器
這個例子展示了動態的頂點和片段編輯。你可以看到一個窗口對應兩個編輯窗口。上面的代碼框是頂點著色器,下面的是片段著色器。shadereditor.kv文件描述接口。
每當改變著色器時,著色器就會進行編譯。如果沒有錯誤,則屏幕會被更新;否則錯誤會在你的終端上顯示。

#### 26)Kivy特征展示
這個例子展示了許多Kivy的特征。你會看到一個菜單列表第一個展示accordion布局。通過點擊'show source'按鈕,你可以查看kv語言代碼,但是不能編輯。通過上方的左右箭頭圖標來進行滾動。
showcase.kv文件描述了主容器,展示的每一個窗口在separate.kv文件中描述;這些文件方置在data/screens路徑里。當data/icon路徑里面的圖標被用在控制列表時,data/background.png用來作為背景。data/faust_github.jpg文件被用在Scatter窗口。這些圖標來自http://www.getleface.com/free_icon_set.html.
android.txt文件被用來為Android程序打包。你可以將該路徑文件拷貝到你的安卓手機/sdcard/kivy/showcase路徑里。

#### 27)觸摸跟蹤展示
這個例子展示了跟蹤觸摸。你可以看到一個基本的背景圖片。當你按壓鼠標時,你將會看到對應的坐標。當你拖拽時,它將會記錄痕跡。額外的像壓力值等信息,可以在touch.profile文件中找到。
這個程序在它的App子類中指定了一個圖標。它也使用了particle.png文件來描繪痕跡。touchtracer.kv文件描述了該應用程序。
android.txt文件被用來為Android程序打包。你可以將這個路徑拷貝到你的安卓設備的/sdcard/kivy/touchtracer路徑里。

### 下節預告:2.2 3D旋轉的猴子腦袋