跳到主要內容

發表文章

目前顯示的是 1月, 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 個位

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 寬度的話 可以使用 an