2013-03-12 32 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