0

我在处理数组和按位运算符时遇到了一些麻烦......

这就是问题所在:我有一个类型为 CheckBox 的数组,在这个数组中我有 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");
}

这就是问题所在,我不能在其中应用按位运算......不知道如何使用或构造一个函数来做到这一点。我知道如何在没有位运算符的情况下做到这一点,但我希望在未来的新版本中使用位运算......

有任何想法吗 ?建议如何解决?

4

1 回答 1

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')
}
于 2013-03-12T20:19:19.000 回答