跳到主要內容

發表文章

目前顯示的是 一月, 2011的文章

位元移動與RGB

大家好,我是奶綠茶
什麼是位元的移動運算呢?
在 flash 裡,使用的符號是: >>(二個大於, 位元向右移) , <<(二個小於, 位元向左移) 簡單來說明一下這個東西有什麼優缺點。 例: 8 >> 1
這句的意思是說,8 的二進位數位, 向右移一個位元
8 (十進位) 的 二進位數值即是:1000
簡單對照一下:
左邊是十進位, 右邊是二進位
1 = 1
2 = 10
3 = 11
4 = 100
5 = 101
6 = 110
7 = 111
8 = 1000

所以 1000 , 向右移一個位元, 即是踢掉最右邊的那個值, 得到 100
就等於 4(十進位)
好理解的方法,就是 8 除以 2
那 8 >> 2 呢
就是右移二個位元, 踢掉最右邊的二個值, 得到 10
就等於 2(十進位)
好理解的方法,就是 8 除以 2 ,再除以2

反之:<< (左移), 即是位元最右邊補 0 那有什麼優缺點呢? 1. 位元的移動是運算速度最快的, 如果你想取一個數位的一半的話 速度快到慢依序為: 值 >> 1
值 * 0.5
值 / 2
2. 直接得到整數
在 flash 裡, 元件的座標出現小數點的話, 會容易會糊糊的
如果此時想要得到某個數值的一半且是整數的話,就用 位元移動的算法吧

缺點
1. 運算優先權的順序
先乘除, 後加減, 這是不變的定律
但位元移動的優先權是最低的,所以是 先乘除, 後加減, 再做位元移動的運算
例:
8 >> 1 + 1 = 2
8 * 0.5 +1 = 5
8 / 2 +1 = 5
結果是不同的。

取RGB數值
大家好,我是奶綠茶
有個色碼為:var color:uint = 0x1199FF;
0x 指的是 16 進位, 一般都是用在色碼上
現在想取出這個色碼的 R, G , B值
當然不能用 String 來抓
這時候就要上位元移動和數位邏輯來製作。
一樣要先把 16 進位轉成 2 進位
偷懶一下,開啟小算盤, 就有轉換的功能了
2 進位為:
100011001100111111111(共24個位元)
所以我們可以知道一個色碼, 佔了 8 個位元
取出 R :就是把右邊的 16 個通通踢掉
var r:uint = color >>…

FlashAS3 亂數不重複的方法

大家好,我是奶綠茶
亂數不重複的方法我想在很多時候都用的到
今天就來分享一下在 flash AS3 裡如何寫呢
假設要取 0 - 9 亂數不重複的3個數字
奶小茶我使用的方法是
1.先建立 0 - 9 的 Array 共 10 個元素
2.亂數排序(參考下方的 shuffle)
3.每次取出 Array 的第一個元素(或最後一個元素, 反正都已經亂排了), 並移除
4.重複第三個Step, 就完成啦。


var _array:Array = [] for (var i:int = pMin; i < 10; i++) { _array.push(i); } _array = shuffle(_array); // 做三次 pop(), 取出 Array 最後的一個值, 並移掉他 _array.pop(); _array.pop(); _array.pop(); // 最後 Array 就只剩 7 個元素了。 function shuffle(pArr:Array):Array { var _cloneArr :Array = pArr; var _l :uint = _cloneArr.length; var _t :*; var _r :int while(_l--){ _r = Math.floor(Math.random() * (_l + 1)); _t = _cloneArr[_l]; _cloneArr[_l] = _cloneArr[_r]; _cloneArr[_r] = _t; } return _cloneArr; } 感謝 Ticore 提醒
PS. 奶綠,文章標題有錯別字 "重複" -> "重覆"
打錯字, 扣五分

米蘭數位祝大家新年快樂

三歲以上,請由兒童陪同進入。
派對內有瘋狂舉動,請衛道人士慎入。
米蘭數位提醒您〔歡樂過量,有益健康〕

http://newyear2011.medialand.com.tw/









這次專案奶小茶我主要是負責錄音的部份
使用 Flash Player 10.1 新的 Microphone, SampleData 事件來錄音
配合 ByteArray.org 提供的 WAVEncoder , 轉存成 wav 檔,然後再使用 MP3 Encoder
轉成 mp3格式
因為考量到之後在混音播放時的參數, 所以我是把原音的聲音檔存下來,之後在播放時
一樣使用 SampleData 來做混音的功能, 這次使用了加速播放和增加 delay

Android LinearLayout

大家好, 我是奶綠茶
LinearLayout:
子元素依序排成一列(或是一行), 就像是 Flex 裡的 HBox(或VBox)
我們在一個 LinearLayout (horizontal)裡,放置三個 Button , 其寬、高皆為 wrap_content
語法:
<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ff0000" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="A_btn" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="B_btn" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="C_btn" /> </LinearLayout> 結果:




如果現在想要讓三個 Button 能夠自動置滿整個 LinearLayout 寬度的話
可以使用 android:layou…