2013-03-12 35 views
0

我有一些麻煩處理數組和位運算符與陣列和位運算符的工作...基於ActionScript3

這就是這個問題:我有類型爲複選框的數組,這個數組中我有3個複選框,一個對於每個選項(pvrtc,dtc1,dtx15),然後我可以選擇:只有一個複選框爲真,或全部爲真。現在我想爲我的狀態使用按位運算符。

我是這麼認爲現在得到直到:

// thats my class with the possible states like consts 
public class CompressionCombinations { 

public static const selectedPvrtc:uint = 1<<0; 

public static const selectedEtc1:uint = 1<<1; 

public static const selectedDxt15:uint = 1<<2; 

public static const selectedPvrtcEtc1Dxt15:uint = selectedPvrtc && selectedEtc1 && 
selectedDxt15; 
// thats mean: selectedPvrtc = checkbox1 true, checkbox2 false, checkbox3 false. 

//now my main class 

//attributing my checkboxes into array 

_combinationArray = new Array(); 
_combinationArray[0] = _checkBoxPvrtc; 
_combinationArray[1] = _checkBoxEtc1; 
_combinationArray[2] = _checkBoxDxt15; 

// a function that do the maths 

if((bin=uint(_combinationArray[0].selected + _combinationArray[1].selected + 
_combinationArray[2].selected)) == CompressionCombinations.selectedPvrtc){ 

_argNativeProcess = new String("p"); 
_nativeProcess.setupAndLaunch(_inputNativeProcess, _outputNativeProcess, 
_argNativeProcess, this); 
_msgSuccessErrorTextField.text = "Converting..."; 
} 
else{ 
trace("not working"); 
} 

那這個問題,我不能把它應用的按位opperation ...不知道如何使用或構建一個函數來做到這一點。我知道怎麼做沒有按位運算符,但我想按位操作未來的新版本...

任何想法?如何解決這個問題的建議?

+0

爲什麼使用位在所有跟蹤((UINT(真)+ UINT(真)+ UINT(假))> 1) – 2013-03-12 17:40:38

+0

SRY,我不明白......那其作用是不正確的,我只是tryied做一些事情...我想比較3複選框的結果與我的常量...成本'公共靜態常量selectedPvrtc:uint = 1 << 0;'意味着checkboxes1 selected = true,其餘的爲false。 – RafaelFelisbino 2013-03-12 18:10:08

+0

我想要做的是...... if(selectedPvrtc){做點什麼}; if(selectedEtc1){Do something}; if(selectedDxt15){Do something}' – RafaelFelisbino 2013-03-12 18:12:20

回答

1
var selectedPvrtc:uint = 1; 
var selectedEtc1:uint = 2; 
var selectedDxt15:uint = 4; 

var _combinationArray :Array = new Array(); 
_combinationArray [0] = checkBoxPvrtc; 
_combinationArray [1] = checkBoxEtc1; 
_combinationArray [2] = checkBoxDxt15; 
var tmp:uint = 0; 
for(var i:int = 0;i<_combinationArray.length;i++){ 
    tmp = tmp|(uint(_combinationArray[i].selected)<<i); 
} 

if(tmp & selectedPvrtc){ 
    trace('selectedPvrtc') 
} 
if(tmp & selectedEtc1){ 
    trace('selectedEtc1') 
} 
if(tmp & selectedDxt15){ 
    trace('selectedDxt15') 
} 
+0

那就是我想要做的,完美的作品哈哈......謝謝@The_asMan – RafaelFelisbino 2013-03-12 20:53:26