也是一樣切換成四種視圖,但是跟之前四種視圖不同。

步驟: 1. 滑鼠點擊圖片位置,移動所需位置。

         2. 移動完所有試圖後,請按之前四種視圖快捷鍵(Ctrl + Alt + Q )。

         3. 再來按照所調的位置,放正確視圖,確定視團再請按(Ctrl + Alt + Q )。

         ※ 第2步驟要在視圖裡面,按下快捷鍵才能有動靜。

blender 版面設定  

來換個球的模型,來做原地彈掉的動畫。

步驟: 1. 先調整模型第一針位置。

         2. 之後再快捷鍵I,會出現 Insert Keyframe Menu 視窗。

         3. 點選後下面的關鍵影個會呈現黃色的顏色(表示: 已經設有模型的姿勢位置)。

※ 換內建模型 案Shift + A ,刪除模型 案D

blender 關鍵影格設定

 設定完後下面關鍵影格會出現設定後的關鍵影格針

 以下關鍵影格設定完之後,就會出現你設定模型姿勢位置來做動畫

※關鍵影格針格數幾格由當下動畫得動作決定,侍候還可做調整。

blender 動畫關鍵影個30針侍候再做調整

播放動畫如果感覺模型移動位置的影格感覺怪怪的。

步驟: 1. 滑鼠點選 DopeSheet 之後視窗模型位置移動影格針

        2. 調整模型位置影格針

※更正圖片裡面敘述的文字: 調整模型位置影格針

blender DopeSheet 設定

 

大致調整完之後再撥放,如果感覺動畫好像太圓滑可以到圖表編輯器來調整。

步驟: 1. 滑鼠點選圖表編輯器

        2. 在模型動畫再撥到另一針動畫調整的視覺變化

※ 圖表編輯器跟 DopeSheet功能有些是相同的,但是差在圖表編輯器可調整視覺變化。

※ 圖表編輯器如果播放下一個動畫的點是可調整,大致上都調整波型,而並不會調整他的位置。(還是要看使用者的使用習慣)

blender 圖表編輯器 設定

如果調整完圖表編輯之後,再回到DopeSheet來調整動畫速度,可以用縮放來調整關鍵影格間距,間距就是動畫播放的下一針的動作速度。

也就是說: 間距越小播放越快。

步驟: 1. 滑鼠點選DopeSheet

        2. 螢幕視窗會顯示出動畫關鍵影格針設定方塊

        3. 按下S後,就會有縮放,當然在縮放的時候下面的關鍵影格也會跟著改變

 blender  DopeSheet 縮放設定關鍵影格  

 假設製作完之後,覺得動畫都ok之後,如何變成avi 呢?!

步驟: 1. 點選旁編列的算繪

        2. 之後選擇繪出的檔案路徑

        3. 點選Avi Raw(影像檔)

※ 匯出檔案類型依使用者設定

※ 再補充一點檔名命名最好  如: 檔案名稱_

※ 更正圖片敘述文字: 點選Avi Raw

blender 算繪

以上設定完之後,就能匯出影片囉。

步驟: 1. 點選動畫 就ok

blender 算圖匯出影片   

Xauxas 發表在 痞客邦 留言(3) 人氣()

在建立骨架的人物模型,會擋到骨頭,除非你開X光,但是還是建議把人物模型移到另外

一個圖層會比較好一點,才不會導致視覺上的錯覺,選錯骨架。

步驟:

1. 物體模式。

2. 點選人物模型。

3. 案M之後點選你要隱藏的圖層。

4. 在編輯模式下進行修改膝蓋骨架關節要有小彎曲。

※ 建立骨架的那章節,膝蓋部分要更正一下,那邊關節要有點小彎曲,在做動畫的時候,

才不會動作異常。

blender 建立骨架圖(更正版)  

再來建立腳部位的腳跟的控制器。

步驟:

1. 選擇編輯模式。 

2. 點選腳跟關節。

3. 案E擠出另外一個單一骨架來當作控制器。

4. 在旁邊列選擇骨骼。

5. 控制器命名。

6. 案DEL鍵清除親代關西(另外一隻腳也是要清除親代關西)

建立腳跟控制器 

再來控制器與非控制器的IK(反向關節)設定。

步驟:

1. 選擇姿勢模式。

2. 點選控制器骨架。

3. 再點非控制器骨架。

4. 在案SHIFT + I 會出現AddIK視窗,點下去。

控制器與非控制器的IK(反向關節)設定  

點下去 TO Active Bone之後,你所選的非控制骨架會呈現土黃色彩。

步驟:

1. 旁邊列點選骨頭約束。

2. 修改IK所影響的範圍。

※ 在調整IK影響的範圍,要一邊測試,才能確定是否調整到適當位置。

※ 另一隻腳也是一樣的做法。

IK影響的範圍設定

 

再來就是手臂的控制骨架,跟腳跟的控制骨架做法相似(避免忘記還是貼一下)。

步驟:

1. 選擇編輯模式。 

2. 點選腳跟關節。

3. 案E擠出另外一個單一骨架來當作控制器。

4. 在旁邊列選擇骨骼。

5. 控制器命名。

6. 案DEL鍵清除親代關西(另外一隻手臂也是要清除親代關西)

建立手臂控制器

再來控制器與非控制器的IK(反向關節)設定。

步驟:

1. 選擇姿勢模式。

2. 點選控制器骨架。

3. 再點非控制器骨架。

4. 在案SHIFT + I 會出現AddIK視窗,點下去。

手臂控制骨架與非控制骨架IK

點下去 TO Active Bone之後,你所選的非控制骨架會呈現土黃色彩。

步驟:

1. 旁邊列點選骨頭約束。

2. 修改IK所影響的範圍。

※ 在調整IK影響的範圍,要一邊測試,才能確定是否調整到適當位置。

※ 另一隻手臂也是一樣的做法。

 手臂骨架控制IK設定  

 

再來製作尾部的控制骨架。

步驟:

1. 選擇編輯模式。

2. 點選尾部關節。

3. 案E擠出另一個單一骨架,來當作控制骨架。

建立尾部的控制骨架  

之後把尾部的控制骨架跟非控制骨架作為親代關西。

步驟:

1. 選擇編輯模式。

2. 點選非控制骨架(案SHIFT才能連點)。

3. 再點控制骨架。

4. 案CTRL + P 會顯示 Make Parent視窗,保持偏移。

控制骨架與非控制骨架親代關西設定  

以上步驟做好後,把所有的控制骨架測試看看是否有問題。

1. 選擇姿勢模式。

2. 點選控制骨架。

3. 在滑鼠點上Z軸來移動,測試控制骨架設定是否有誤。

※ 這邊只是演示測試尾部控制骨架,其他控制骨架還是測試一下會比較好一點。

※ 要回復最早的動作: ALT + G 及 ALT + R 和 ALT + S

測試所有的剛剛建立控制骨架  

 

再來製作一個腳尖的控制器。

步驟:

1. 選擇編輯模式。

2. 建立跟腳部反方向的骨架,來當作控制骨架。

3. 調整到適當位置。

建立腳尖控制器  

再來把腳踝控制器與剛建立控制器建立親代關西。

步驟:

1. 選擇編輯模式。

2. 點選腳踝控制器,之後案住SHIFT才能連點。

3. 再點剛建立控制器。

4. 案CTRL + P會顯示 Make Parent視窗,點下保持偏移。

腳踝控制器與剛建立控制器建立親代關西  

點下去保持偏移的話,會出現兩條虛線。

步驟:

1. 選擇編輯模式。

2. 點選另外一邊個腳踝控制骨架。

3. 旁邊骨骼圖示點下去。

4. 案DEL鍵清除親代關西。

點下去保持偏移的話,會出現兩條虛線  

接下來抬腳跟的控制器設定。

步驟:

1. 選擇姿勢模式下。

2. 點選控制骨架,按下SHIFT鍵才能連點。

3. 再點非控制骨架。

4. 案 CTRL + SHIFT + C 會出現所謂的添加約束的視窗(※下面圖片快捷鍵更正  CTRL + SHIFT + C)。

5. 點選追蹤至。

接下來抬腳跟的控制器設定

 

之後再跟前面那張圖片步驟一樣,把前面一端給約約束好。 

步驟:

1. 點選控制骨架(案SHIFT才能連點)。

2. 再點選非控制骨架。

3. 選擇追蹤至。

另外一抬腳尖是一樣的做法

前面腳趾約束 

 

再來因為在跳躍動作的時候,手還是在原地的,來設定一下,在動作才會比較自然。

步驟:

1. 選擇編輯模式。

2. 點選手臂控制骨架(案SHIFT才能連選)。

3. 最後點選脖子骨架。

4. CTRL + P 出現Make Parent視窗,點選保持偏移。

跳躍動作的時候,手還是在原地的,來設定一下  

 

接下來就是跡部關節設定。

步驟: 

1. 姿勢模式下。

2. 點選下方骨架(案SHIFT才能連選)

3. 之後點選上方的骨架。

4. 選擇親代為。

跡部關節設定  

之後約骨架約束後,動作可能會有點怪異。

步驟:

1. 旁邊列找到骨骼約束。

2. 點選設定反方,就換變成正常的姿勢。

骨架約束後,動作可能會有點怪異  

之後上面那跟骨架也是要約束,但是有更快的方法。

步驟:

1. 點選沒有約束的骨架。

2. 再點選有約束的骨架。

3. 在點選下面的姿勢。

4. 找到點下去約束。

5. 複製骨骼約束點下去,就完成了。

骨頭約束更快的方法  

 

假設綁定之後,就無法看到骨頭來做動畫,所以還要再綁一個外接控制器,方便以後

做動畫來使用。

 

手臂外接控制器。

步驟:

1. 編輯模式。

2. X軸鏡像。

3. 手臂控制骨架。

4. SHIFT + D 複製,拉到人物模型部會擋到的位置。

手臂外接控制器 

 

再來就是把外接控制器跟手臂控制器的骨架約束。

步驟:

1. 姿勢模式。

2. 點選控制骨架。

3. 再點選被控制骨架。

4. 再點選複製位置。

※ 另一個手臂外接控制器也是一樣的做法。

外接控制器跟手臂控制器的骨架約束  

微調手臂骨架的約束。

步驟:

1. 點選骨骼約束。

2. 選擇區域空間, 後骨架姿勢才會正常。

※ 另一個手臂外接控制器也是一樣的做法。

微調手臂骨架的約束  

 

在來就是基部外接控制器及設定。

步驟:

1. 編輯模式。

2. 案SHIFT + A 建立新的的單一骨架當作外接控制器。

3. 點選控制器。

4. 再點選被控制器。

5. 案CTRL + P 會出現Make Parent視窗,一樣選擇保持偏移。

基部外接控制器及設定  

 

再來設定跡部跟外接控制器如何做骨架約束。

步驟:

1. 選擇姿勢模式。

2. 選擇控制骨架。

3. 再選被控制跡部骨架。

4. 點下複製旋轉。

跡部跟外接控制器如何做骨架約束  

之後微調骨架約束。

步驟:

1. 旁邊選擇骨骼約束。

2. 選擇區域空間,骨架姿勢才會比較正常。

微調骨架約束  

 

再來建立腳部外接控制器。

步驟:

1. 編輯模式。

2. 點選腳部反方向控制(可以案一根腳部反方向骨架,案 SHIFT + ] )。

3. 案SHIFT + D 複製腳步反向向腳架,來當作外部控制器。

※ 另一隻腳部外接控制器是一樣的做法。

建立腳部外接控制器  

再來就是外部控制器跟腳部反方向控制器的約束。

步驟:

1. 姿勢模式。

2. 點選控制骨架。

3. 再點選非控制骨架。

4. 選擇複製旋轉。

※ 另一隻腳部外接控制器是一樣的做法。

外部控制器跟腳部反方向控制器的約束 

在來就是前半部的骨架約束,跟上面步驟相同。

步驟:

1. 點選控制骨架。

2. 再點選非控制骨架。

3. 點選複製旋轉。

※ 另一隻腳部外接控制器是一樣的做法。

前半部骨架約束  

再來就是外接控制器最後一個骨架控制設定。

步驟:

1. 編輯模式。

2. 點選控制骨架。

3. 再點選非控制骨架。

4. 案住CTRL + P 就會產生Make Parent視窗,再點保持偏移。

※ 另一隻腳部外接控制器是一樣的做法。

外接控制器最後一個骨架控制設定  

 

最後就是骨架跟人物模型綁定的工作。

再綁定之前控制骨架一定要把變形給拿掉。

步驟:

1. 看到黃色骨架就是要把變形給勾拿掉。

要一根一根選,而不能全部選起來一次把變形勾拿掉是沒用的,他只為把最後一隻變形勾拿掉。

顯示骨架變形勾拿掉  

 

之後再把人物模型圖層移到跟骨架同一個圖層。

1. 選擇物件模式(找到人物模型圖層)。

2. 案人物模型。

3. 案M會出現圖層視窗再移至跟骨架相同圖層。

補充: 剛剛那個人物模型,物件修改器會有之前建立骨架那張的自動權重的小視窗,

請案叉叉人物模型才能正常運用。

人物模型移至圖層  

最後人物模型綁定骨架,基本骨架跟骨架控制就完成了。

步驟:

1. 回到骨架圖層。

2. 先點選人物模型。

3. 再點選骨架。

4. 案CTRL + P會產生設定親代。

5. 點選自動權重。

點選骨頭後回到姿勢模式下是否點選到控制骨架,若是點選到,請重新點選。

人物模型綁定骨架  

之後再姿勢模式下,測試是否成功。

步驟:

1. 點選外接控制骨架,來移動看看人物模型是否與骨架綁定及檢查是否異樣地方。

當然也可以新建地板,當作足立點

再姿勢模式下是否綁定成功或異常  

之後就是動畫製作....

我在製作動畫中,出現出現手臂跟手腕那邊有破圖問題。

因此另外補充,若還有問題我會繼續更改我的筆記。

※ 另外補充: 在手臂那邊的旋轉,還要約束才能旋轉不然會有所謂位的破圖。

步驟:

1. 選擇姿勢模式。

2. 先點選控制骨架。

3.再點選非控制骨架。

4. 選擇複製旋轉。

手臂控制骨架    

約束點選之後,會出現一些不正常的姿勢,所以來做設定調及旋轉影響的範圍。

步驟:

1. 旁邊列點選骨架約束。

2. 選擇區域空間。

3. 影響建議調到0.2-0.3附近。

※ 影響範圍要看設計者的模型來決定。

※ 另一隻手臂步驟也是如此。

手臂骨架約束  

接下來就是手腕的控制骨架,跟上面手臂步驟相同。

步驟:

1. 選擇姿勢模式。

2. 先點選控制骨架。

3.再點選非控制骨架。

4. 選擇複製旋轉。

5. 旁邊列點選骨架約束。

6. 選擇區域空間。

※ 另一隻手腕步驟也是如此。

手腕的控制骨架及約束設定  

再做測試之前,感覺好像會搞混,所以我們先把控制骨架移到另外一個圖層。

※ 跟人物模型移動塗層不同。

步驟:

1. 選擇編輯模式下。

2 .點選所有的控制骨架。

3. 旁邊列點選物資料。

4. 案M快捷鍵會出現更改骨骼圖。

5. 把所有的控制骨架移至另一個圖層。

骨架移至圖層  

以上設定好之後,進行測試是否成功該設定。

1. 選擇姿勢模式。

2. 點選控制骨架的圖層。

3. 案選轉控制器,進行測試。

手臂及手腕骨架測試 

測試成功圖。

※ 若有破圖是約束設定影響範圍設定出錯或者約束設定錯誤,請重新再設定。

手臂及手腕測試成功圖。  

 

 

 

 

 

 

   

 

 

 

Xauxas 發表在 痞客邦 留言(0) 人氣()

螢幕上blender 剛開起來的時候,只有一個視窗,之後還要滑鼠看 左視圖、上視圖那些移動,但是在建立骨架的時候,一邊建立一邊移動畫面,是相當麻煩的。

在blender裡面有一個功能是直接可以切換4種角度的視窗快捷鍵是: Ctrl + Alt + Q (如: 以下圖片)。

blender四個視窗圖片  

 

在物件模式下案 shift + A 點選骨架,再點選單一鶻格(如: 下圖)。

blender添加骨骼  

就會出現 螢幕上一個單一骨架的八面圖(如: 下圖)

1  

之後把骨頭移到人物物件裡面,但是會發現到會看不見骨頭,如何看到剛剛添加的單一鶻格呢?!

點選骨頭之後,選擇物件資料,下面有一個 X光打勾就能看到骨頭了(如: 下圖)

blender物件裡面顯示骨頭  

看到單一骨架之後就可以建立全身的骨架囉~!!

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

如何建立骨架呢?!

先點選單一骨架之後,在選擇編輯模式下,之後按案快捷鍵: E 會擠出另一個骨架,之後慢慢建立全身的骨架。

blender 擠出單一骨架  

在下半身如果一個一個建立骨架,感覺效率好像有點慢,好像有點會失真的感覺。

在blender裡面的功能有所謂的 X軸鏡像。

在骨架選項,有個 X軸鏡像打勾之後,案Shift + E 就能擠出兩邊的單一骨架了,之後再按 案 E 繼續完成下半身的骨架。

1  

 

上半身的做法跟下半身幾乎類似。

建立所有全身的骨架大概就是這樣子。

blender 全身的骨架  

建立骨頭之後,在姿勢模式下,發現到只有骨頭才能移動,表示骨頭沒有綁上去的意思。

那表示就不能繼續弄這個模型做成動畫了。

 

那怎麼綁上去呢?!

在物件模式下,先點選人物模型,之後骨架案Ctrl + P 之後選擇自動權重個選項。

blender 權重  

在選擇姿勢模式下,案 R 旋轉之後測試一下,骨架是否與人物物件綁定上去。

綁定上去表示成功,未綁定是上去是權重的問題。

(如: 下圖 表示成功)

  blender綁定成功  

(如: 下圖表是失敗)

blender綁定失敗  

 

 

 

 

Xauxas 發表在 痞客邦 留言(1) 人氣()

blender 中文化設定:

 

第一步驟: File 裡面選擇 user preferences....

第二步驟: 之後跳出視窗點選System,勾取International Fonts,選擇你需要的語言,勾選下面兩個方塊(介面,提視窗),再點選 Saver As Defalt

  blender 中文化  

Xauxas 發表在 痞客邦 留言(0) 人氣()

using UnityEngine;
using System.Collections;
 
public class Evemy1 : MonoBehaviour
{
    
    public static int Speed = 150;  //掉下來數度
    private float evemytime = 0.05f;  //敵人時間
    private float evemyspeed;
    private float x, y, z;  //座標
    public GameObject EvemyDada; //新建遊戲物件
    
    void Start(){
        evemy();
    }
    
    // Update is called once per frame
    void Update ()
    {
        if (evemytime <= Time.time) { //假設條件時間
            
            transform.Translate (Vector3.down * Time.deltaTime * Speed); //物件往下掉
            if (transform.position.z <= 235.0f){  //假設物件座標z軸
                evemy();
            }
        }
        
    }
    
    void evemy(){
       
        evemyspeed = Random.Range(100,500);  //取亂數
        x = Random.Range(-321,321);
        y = 341f;
        z = 752;
        
        transform.position = new Vector3(x, y, z); 新建物件座標
    }
 
    void OnTriggerEnter (Collider c)  //碰撞
   
        if (c.tag == "Bullet) {  //架設物件碰到物件(標籤名稱)
            Instantiate (EvemyDada, transform.position, transform.rotation); //實體(物件, 本身物件座標, 物件旋轉座標)
        }
        Destroy (gameObject);  //刪除物件
    }
}  
 

using UnityEngine;
using System.Collections;

public class Evemy1 : MonoBehaviour
{

public static int Speed = 150; //掉下來數度
private float evemytime = 0.05f; //敵人時間
private float evemyspeed;
private float x, y, z; //座標
public GameObject EvemyDada; //新建遊戲物件


void Start(){
evemy();
}

// Update is called once per frame
void Update ()
{
if (evemytime <= Time.time) { //假設條件時間

transform.Translate (Vector3.down * Time.deltaTime * Speed); //物件往下掉
if (transform.position.z <= 235.0f){ //假設物件座標z軸
evemy();
}
}

}

void evemy(){

evemyspeed = Random.Range(100,500); //取亂數
x = Random.Range(-321,321);
y = 341f;
z = 752;

transform.position = new Vector3(x, y, z); 新建物件座標
}

void OnTriggerEnter (Collider c) //碰撞
{
if (c.tag == "Bullet) { //架設物件碰到物件(標籤名稱)
Instantiate (EvemyDada, transform.position, transform.rotation); //實體(物件, 本身物件座標, 物件旋轉座標)
}
Destroy (gameObject); //刪除物件
}
}

Xauxas 發表在 痞客邦 留言(0) 人氣()

using UnityEngine;
using System.Collections;

public class SimpleShip : MonoBehaviour
{
public float speed; // 物件移動速度;
public int speed2; //發射物件數度;
public Rigidbody Projectile;

// Update is called once per frame
void Update ()
{
 
   float abtToMove = Input.GetAxis ("Horizontal") * speed * Time.deltaTime;  //輸入方向鍵及a,d 鍵 就水平移動

   transform.Translate (Vector3.right * abtToMove);  // 物件移動

   if (transform.position.x >= 205.0f)  // 假設物件移到調鍵x軸
       transform.position = new Vector3 (-205.0f, transform.position.y, transform.position.y); // 物件 就重-x軸出現
  else if (transform.position.x <= -205.0f)  // 假設物件移到調鍵x軸
      transform.position = new Vector3 (205.0f, transform.position.y, transform.position.y); // 物件 就重x軸出現
  // 發射物件
  if (Input.GetKeyDown ("space")) { 
      Rigidbody clone;  
      clone = (Rigidbody)Instantiate (Projectile, transform.position, transform.rotation);
      clone.velocity = transform.TransformDirection(Vector3.up * speed2); 
     }
   }
}

Xauxas 發表在 痞客邦 留言(0) 人氣()

using UnityEngine;

using System.Collections;

 

public class MainCamera : MonoBehaviour

{

private bool sw = false; //另外視窗開關

 

void OnGUI ()

{

     // 換場景

     if (GUI.Button (new Rect (20, 20, 100, 50), "Play")) {

      Application.LoadLevel("Startgame");  //場景名稱

      }

 

      if (GUI.Button (new Rect (20, 80, 100, 50), "Game Guide"))

          sw = true;

 

      if (sw == true)

     GameGuide ();

     else sw = false;

     }

 

 void GameGuide ()

 {

    GUI.Window (0, new Rect(360,30,400,300), DoMyWindow, "Game Guide");  // GUI.window(編號 , 位置 ,  視窗底下方法 , "視窗名稱" )

  }

 

// 寫入視窗方法

 void DoMyWindow (int windowID)

 {

     GUI.Label(new Rect(10,20,100,20), "Computer keys: ");

     GUI.Label(new Rect(30,40,100,20), "Laft: a");

     GUI.Label(new Rect(30,60,100,20), "Right: d");

     GUI.Label(new Rect(30,80,200,20), "Fired bullets: spacebar");

     GUI.Label(new Rect(30,100,200,20), "Leave game: Esc / y");

 

    if(GUI.Button(new Rect(150,260,100,20),"Exit")){

       Application.LoadLevel("feelPlaygame");

      }

    }

}

 

 

Xauxas 發表在 痞客邦 留言(0) 人氣()

android:

xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
 
    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="放入購物車" />
 
    <TextView
        android:id="@+id/TextView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button1" />
 
    <TextView
        android:id="@+id/TextView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/TextView1" />
 
    <ListView
        android:id="@+id/lstView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/TextView2" />
 
</RelativeLayout>
 
-----------------------------------------------
 
java:
package com.example.test18;
 
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
 
public class MainActivity extends Activity implements OnClickListener,
OnItemClickListener {
 
public Button btn1;
public TextView txtView1, txtView2;
public ListView lis;
 
String[] str = new String[] { "香蕉", "西瓜", "梨子", "水蜜桃" };
String[] b = new String[] { "330", "120", "250", "280" };
 
int[] a = new int[] { 330, 120, 250, 280 };
int i;
 
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lis = (ListView) findViewById(R.id.lstView);
txtView1 = (TextView) findViewById(R.id.TextView1);
txtView2 = (TextView) findViewById(R.id.TextView2);
(btn1 = (Button) findViewById(R.id.button1)).setOnClickListener(this);
 
ArrayAdapter<String> arrayadapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, str);
 
lis.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
lis.setAdapter(arrayadapter);
i = arrayadapter.getCount();
lis.setOnItemClickListener(this);
 
}
 
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
 
public void onClick(View v) {
// TODO Auto-generated method stub
int sellAll = 0;
for (int x = 0; x < i; x++)
if (lis.isItemChecked(x))
sellAll += a[x];
txtView2.setText("總額:" + sellAll);
 
}
 
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
if (lis.isItemChecked(arg2)) {
 
String sel = arg0.getItemAtPosition(arg2).toString();
 
setTitle("選購了:" + sel);
 
} else {
setTitle("");
}
 
}
}
 

Xauxas 發表在 痞客邦 留言(0) 人氣()