2015年2月27日 星期五

eMotion: Getting Started With Layers And Particles

since: 2015/02/27
update: 2015/02/27
reference:
1. eMotion | Adrien M / Claire B
2. eMotion app > Help > eMotion Help

A. 下載軟體:

     eMotion | Adrien M / Claire B
     > Download eMotion 0.7.1 [Mac OS X 10.8 & 10.9 only]
     > 解壓縮後產生: eMotion.app

-----------------------------------------------------------------------------------------------

B. 新增圖層:
     1. 點擊 eMotion.app 開啟應用程式後, 出現一個全黑的視窗.

     2. Window > Layers: 產生圖層視窗

     3. 點擊 "+ New layer" 產生新的圖層, 並用滑鼠雙擊 Layer 名稱, 更改合適的名稱.

-----------------------------------------------------------------------------------------------
C. 儲存專案檔案與重新載入:
    1. File > Save As...


    2. 選擇儲存位置後, 輸入名稱, 按下 "Save"


   4. 離開 eMotion: eMotion > Quit eMotion

   5. 載入專案檔案: 打開 eMoton 後, File > Open...

    > 選擇專案檔案 > Open

    開啟圖層視窗: Window > Layers
                               > 多出了一個 Lights 的圖層, 目前尚未用到, 可以按下 "" 移除.

-----------------------------------------------------------------------------------------------

D. 粒子特效:

1. Tools > Particles

2. Window > Current tool options
    Flow: 流動效果
    Size: 粒子大小 (設成: 3)
    Opacity: 不透明度
    Impulse: 脈衝效果 (設成: 1)

3. 點選 particles 1 圖層, 用滑鼠畫出 "Hello"

4. 點選 particles 2 圖層, 用滑鼠畫出 "eMotion"

5. 點選 particles 1 圖層, 取消勾選 "顯示圖層";
    點選 particles 2 圖層,降低不透明度.

2015年2月24日 星期二

eMotion: A Brief Introduction

since: 2015/02/24
update: 2015/02/24
reference:
1. eMotion | Adrien M / Claire B
2. eMotion app > Help > eMotion Help

A. 關於 eMotion:
eMotion 是一個用來在即時視覺表演中, 創造物體之間相互運動的工具.

-----------------------------------------------------------------------------------------------

B. 主要概念:
1. eMotion 是以物體為基礎的.(例如: 粒子, 文字, 繪畫的筆觸, Mac 的 Quartz繪圖層
    等成分
)

2. 程式中所創造出來的運動變化置放於
物理模型中, 又叫做施加到物體的(物理)力.

3. 這種力可使用 "
運動筆刷"(movement brushes) 來創造, 或者經由在一個控制器
    與物體集合之間定義一個關係來達成.(例如:
Wii遙控器與一些文字)

4. 物
體們被組織在多個圖層裡, 並且每個物體都可以有各自的一套物理規則.

5. 隨著時間進展的
物理規則可以被記錄在腳本視窗(script window)裏.
     腳本(
script) 是錄製/保存動畫的唯一途徑.

-----------------------------------------------------------------------------------------------

C. eMotion app:
1. eMotion 是用來在圖形物體真實世界訊息之間創造互動應用程式.
    它是基於
一個物理動畫系統
, 其目的在探索如何運動可以傳達情感.
    換句話說: 它是一個編輯器, 允許你經由點, 線, 圖片, 影片所組成的物體來定義一個
    生動的世界, 並且去定義與其互動的方式(發出聲音,
使用 kinect, wiimote, leap motion
    , 等等).
 


2. 所有的圖像都是即時計算, 投影產生的, 以創造一個感官合成,在舞台上有形的現實.
    而這一切, 是藉由在數位程式中定義一個重要原則:
    關注於造成物體移動的內在能量, 而不是物體實際的運動模式. 

    因此, 數學數位技術成為可能的理想組合工具.

    脫離了原本使用的目的, 它們使我們能夠創造新穎的感覺, 雖然合成的空間.

    們開啟通往想像虛擬世界領域大門, 現實世界並行, 並傳遞所喚起的力量.  

2015年2月10日 星期二

WatchKit: Getting Started with Swift

since: 2015/02/06
update: 2015/02/10
reference:
1. WatchKit Introduction: Building a Simple Guess Game in Swift
2. WatchKit Tutorial with Swift: Getting Started
3. Apple Watch Human Interface Guidelines: Designing for Apple Watch
4. Apple Watch Programming Guide: Developing for Apple Watch

A. 前言:

1. 這篇文章大部份是翻譯 WatchKit Introduction: Building a Simple Guess Game
     的內容,部分觀念取自 WatchKit Tutorial with Swift: Getting Started, 並在實作上
     的步驟做些微的調整.

2. (原)編輯的註釋:
在未來的幾個月中, Apple Watch 將如眾人期許地正式開賣. 如你所知, Apple 公司已經
伴隨著 Xcode 6.2 beta 釋出 WatchKit SDK, 允許開發者建立給即將到來的 Apple Watch所使用的 apps. 所以你可能已經試過建立 Watch apps. 如果不是的話, 這篇初學者的導引
就是寫給你看的. 這禮拜,  Julo’s development Julian 將會介紹 WatchKit 並且展示如
使用 SDK 建立一個簡單的猜謎遊戲. 你將會學到如何建立 Watch app, 設計 app 的 UI
並且測試 app.

3. WatchKit 學習導引:
Apple 於 2014 年 11 月 18 日, 隨著 Xcode 6.2 beta 首次釋出了 WatchKit. 這個 SDK 允許
開發者替 Apple Watch 建立並開發 apps. 要開發 Apple Watch 的應用, 必須要有付費的
開發帳號來下載 Xcode 6.2 beta. 這個展示的 app 將會用 Swift 來撰寫. 所以期許你有一
Swift 基本知識的程式概念. 好了, 我們開始吧. 

-----------------------------------------------------------------------------------------------

B. 瞭解 WatchKit Apps:
1. 截至目前為止, Apple 尚未允許開發者建立原生(native)的 Watch apps. 現今, 有三種
    類型的 Apple Watch 體驗可以建立: WatchKit apps, Glancesactionable
    notifications. 在這裡, 只會專注在 WatchKit apps 的導引教學, 不會涉及到 Glances
    和 notification.

2. 首先, Watch apps 並不是獨立的 apps, 這意謂著它們需要跟使用者 iPhone 上的 iOS
     app 做搭檔. 你將要建立的 Watch app 將只是 iPhone app 的延伸部分. iPhone app
     負責安裝與管理 Watch app. 更進一步地, iPhone app 能夠與 Watch App 溝通, 但是
     在此處, 我們不會討論到.

3. Apple watch 將會有二種螢幕大小: 38mm42mm. 當在設計 Apple Watch 的使用者
    介面時, 你並不需要同時設計二種螢幕大小. Xcode 會自動調整版面來配合螢幕大小.
    Apple WatchKit  使用它自己的排版系統來取代 iPhone 上的 auto layout.

4. Watch apps 的術語: (from WatchKit Tutorial with Swift: Getting Started)
    Watch apps 的術語 與 iOS 和 Mac 有一點不同 -  相對於: views, controls
    view controllers 的是:  interfaces, interface objectsinterface controllers.

-----------------------------------------------------------------------------------------------

C.展示的 App:
      現在我們將要以兒童遊戲 "有多少根手指" 當作原則為基礎, 建立一個簡單的 Apple
      Watch 遊戲. 首先 watch app 會記住玩家所猜測的手指數目(亦即從 0 ~ 5 的數字).
      接著, app 會檢查玩家所猜測的結果是否正確, 並且依此來顯示訊息. app 的 UI 看起
      來, 如下所示:

-----------------------------------------------------------------------------------------------

D. 建立 WatchKit App 專案:
1.假設你已經安裝了 Xcode 6.2 beta 4 (或更新的版本),首先建立一個新專案:
   Xcode > File > New > Project... iOS > Application >
   Single View Application > Next

    Choose options for your new project:
         Product Name: WatchKitDemo
         Language: Swift

         > Next > Create

2. 如先前提到的, Watch apps (目前)僅是 iPhone apps 的延伸.
     接著, 要建立一個 Watch app:(在剛剛所建立的 WatchKitDemo 專案下)
     Xcode > File > New > Target >
     iOS > Apple Watch > Watchkit App > Next

   取消勾選 "Include Notification Scene", 其它預設即可 > finish

    接著, 出現警告訊息, 問你是否要 "激活" 新的方案(scheme). 按下 "Activate" 後,
    會在你的 Xcode 專案新增一個 scheme, 可用來測試跑在 Apple Watch 模擬器
    上的 app.

    結果:


   在專案導覽中, 會看到二個新增的資料夾: "xxx WatchKit Extension" 與
   "xxx WatchKit App" (p.s. xxx 為專案名稱):

   --> "xxx WatchKit App":  僅包含 storyboards 及與 app 使用者介面相關連的資源檔.

   --> "xxx WatchKit Extension": 是你用程式碼管理邏輯與更新使用者介面的地方.

    簡單的說, Watch app 提供 view 來顯示資訊, 並且與使用者互動;
    而其餘的重擔都由 iPhone app 來處理.

-----------------------------------------------------------------------------------------------

E. 使用者介面設計:
1. 首先, 我們將要開始設計 Watch app 的使用者介面. 請在專案導覽中點選
     “WatchKitDemo WatchKit App” 資料夾內的 Interface.Storyboard 檔案.
     如同 iOS app, Xcode 提供一個 storyboard 來設計 Watch app 的 UI.

2. 開始從 Object library 拉拖一個標籤(label) 放到 Interface Controller 裡.
    你會看到它自動上浮到 controller 的頂部. 這是因為 Interface Controller 被分隔成
    三個主要的區域: 頂部, 中央底部. 這是由於 Apple Watch 的小型螢幕關係.    
    接著, 先點選剛剛新增的標籤, 可以在 Attribute Inspector(屬性檢查員)中,
    位於 position tab (位置頁籤)下方, 可以看到垂直與水平的位置. 分別設定水平置中
    與垂直置中. 下一步, 將標籤的 Text 改為 "Your guess is: 3". 最後結果如下所示:   

3. 繼續建立一個 slider(滑動區塊), 可用來讓使用者改變所猜的數值. 所以將一個
     slider 從  Object library 拖放到介面中. 在這裡, 必須要改變 slider 的一些屬性:

     a. 因為使用者可以猜測的數字從 0 到 5, 所以將 steps(步驟) 設為 5.
         這會把 slider 分割成 5 個部分, 每個部分代表一個值.

     b. 最小值設成 0, 最大值設成 1.

     c. 因為我想讓預設值為 3, 所以要將 Value 改成 0.6.

     屬性設定好後, 如下所示:

4. slider 設定好後, 再從 Object Library 拖放一個 button(按鈕) 到介面裡, 並且將其
     Title 設為: Guess. 也作垂直置中. 屬性設定好後, 如下所示:


5. 要完成 UI, 我們需要一個 Label 來顯示使用者所猜的答案正確與否. 所以請拖放
     一個 Label 到介面中, 將 Title 設為: "Press Guess to play", 下一步, 將其垂直位置
     設為底部. 並將最小字型級別設為 0.5, 如此文字才能適當呈現.
     最後的 UI 設計, 如下所示:

-----------------------------------------------------------------------------------------------

F. 新增連結: Actions and Outlets
接著之前的步驟, 在點選 Interface.storyboard 的情況下, 點選 assistant editor
(編輯器助理), 將會並列顯示 Interface.swift 檔案, 並依照以下的步驟:

A. Outlets:
1. slider(滑動區塊):
    點選 slider, 按下 Control 加上滑鼠左鍵將此 slider 拖曳InterfaceController
  類別定義的內部, 來建立一個
outlet:
   
    設定:
    Connection: Outlet
    Name: guessSlider
    > 按下 "Connect"
   
    結果如下:

2. Label(顯示猜測數字的標籤):
    點選 "Your guess is: 3" Label, 按下 Control 加上滑鼠左鍵將此 label 拖曳
    InterfaceController 類別定義的內部, 來建立一個 outlet:

    設定:
    Connection: Outlet
    Name: guessLabel
    > 按下 "Connect"

    結果如下:

3. Label(顯示答案正確與否的標籤):
    點選 "Press Guess to play" Label, 按下 Control 加上滑鼠左鍵將此 label 拖曳
    InterfaceController 類別定義的內部, 來建立一個 outlet:

    設定:
    Connection: Outlet
    Name: resultLabel
    > 按下 "Connect"

    結果如下:

B. Actions:
1. slider(滑動區塊):
    點選 slider, 按下 Control 加上滑鼠左鍵將此 slider 拖曳InterfaceController
  類別定義的內部, 來建立一個 action
:

    設定:
    Connection: Action
    Name: updateGuess
    > 按下 "Connect"

    結果如下:

2. button(執行猜測的按鈕):
    點選 button, 按下 Control 加上滑鼠左鍵將此 button 拖曳InterfaceController
  類別定義的內部, 來建立一個 action
:

    設定:
    Connection: Action
    Name: startGuess
    > 按下 "Connect"

    結果如下:

-----------------------------------------------------------------------------------------------

G. 程式碼撰寫:
1. 使用者介面與連結設置好後, 就可以開始寫程式了. 如前所述, 程式邏輯會放在
     WatchKit Extension 裡的 InterfaceController.swift 檔案中, 並且這個檔案已經
     跟我們所設計的 Interface Controller UI 關聯了.

2. 開啟 InterfaceController.swift 檔案, 修改如下:
import WatchKit
import Foundation

class InterfaceController: WKInterfaceController {
   
    //@add: the number you guess

    var guessNumber = 3
   
    //@add
    @IBOutlet weak var guessSlider: WKInterfaceSlider!
    @IBOutlet weak var guessLabel: WKInterfaceLabel!
    @IBOutlet weak var resultLabel: WKInterfaceLabel!
   
    //@add
    @IBAction func updateGuess(value: Float) {
        //@add: get the user's number and update the guess label
        /* As the slider goes from 0 to 1, we have to multiply the slider value by 5
           in order to get the actual number.
        */

        guessNumber = Int(value * 5)
       
        // We then update the text label accordingly.
        guessLabel.setText("Your guess is: \(guessNumber)")
    }
   
    //@add:
    /* This is the method that generates a random number
       and compares it with the guess.
    */

    @IBAction func startGuess() {
        //@add: generate a random number between 0 and 5

        var randomNumber = Int(arc4random_uniform(6))
       
        if(guessNumber == randomNumber) {
            resultLabel.setText("Correct. You win!")
           
        } else {
            resultLabel.setText("Wrong. The number is \(randomNumber)")
        }

    } 
....
}

-----------------------------------------------------------------------------------------------

H. 執行: