PDA

View Full Version : How to check component


untitled88
11-10-2009, 09:40 PM
Hey all,
I have a CheckBox set up and was wondering how I could keep track of:
1.How many are clicked
2.Once any 3 are clicked then the other 3 are disabled

Heres the script, any help would be appreciated.

package {
import fl.controls.CheckBox;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.text.TextField;

public class CheckBoxExample extends Sprite {
private var cb1:CheckBox;
private var cb2:CheckBox;
private var cb3:CheckBox;
private var cb4:CheckBox;
private var cb5:CheckBox;
private var cb6:CheckBox;
private var tf:TextField;

public function CheckBoxExample() {
createTraceField();
setupCheckBoxes();
}
private function createTraceField():void {
tf = new TextField();
tf.width=200;
tf.height=200;
tf.x=100;
tf.y=10;
tf.border=true;
tf.text="You have selected:\n";
addChild(tf);
}
private function setupCheckBoxes():void {
cb1 = new CheckBox();
cb2 = new CheckBox();
cb3 = new CheckBox();
cb4 = new CheckBox();
cb5 = new CheckBox();
cb6 = new CheckBox();
cb1.label="A";
cb2.label="B";
cb3.label="C";
cb4.label="D";
cb5.label="E";
cb6.label="F";
cb1.y=10;
cb2.y=30;
cb3.y=50;
cb4.y=70;
cb5.y=90;
cb6.y=110;

cb1.addEventListener(MouseEvent.CLICK,updateCart);
cb2.addEventListener(MouseEvent.CLICK,updateCart);
cb3.addEventListener(MouseEvent.CLICK,updateCart);
cb4.addEventListener(MouseEvent.CLICK,updateCart);
cb5.addEventListener(MouseEvent.CLICK,updateCart);
cb6.addEventListener(MouseEvent.CLICK,updateCart);
//
addChild(cb1);
addChild(cb2);
addChild(cb3);
addChild(cb4);
addChild(cb5);
addChild(cb6);
}
private function updateCart(e:MouseEvent):void {
var cb:CheckBox=CheckBox(e.target);
tf.text="You have selected:\n";
if (cb1.selected==true) {
tf.appendText(cb1.label + "\n");
}
if (cb2.selected==true) {
tf.appendText(cb2.label + "\n");
}
if (cb3.selected==true) {
tf.appendText(cb3.label + "\n");
}
if (cb4.selected==true) {
tf.appendText(cb4.label + "\n");
}
if (cb5.selected==true) {
tf.appendText(cb5.label + "\n");
}
if (cb6.selected==true) {
tf.appendText(cb6.label + "\n");
}
}
}
}

Greg SS
11-10-2009, 10:18 PM
private var checked:int;
private var cbs:Array;

private var setupCheckBoxes():void
{
...
cb1.addEventListener(Event.CHANGE, checkCart);
cb2.addEventListener(Event.CHANGE, checkCart);
...
cbs = [cb1, cb2, cb3, cb4, cb5, cb6];
}

private function checkCart(e:MouseEvent):void
{
var cb:CheckBox = e.target as CheckBox;
if(cb.selected) checked++ else checked --;
if(checked < 3) {
for(var i:int=0; i<cbs.length; i++){
cbs[i].enabled = true;
}
} else {
for(i=0; i<cbs.length; i++){
if(!cbs[i].selected) cbs[i].enabled = false;
}
}
}

Greg SS
11-10-2009, 10:26 PM
Another flavor.


private var cbs:Array;
private var selectedCbs:Array = [];

private var setupCheckBoxes():void
{
...
cb1.addEventListener(Event.CHANGE, checkCart);
cb2.addEventListener(Event.CHANGE, checkCart);
...
cbs = [cb1, cb2, cb3, cb4, cb5, cb6];
}

private function checkCart(e:MouseEvent):void
{
var cb:CheckBox = e.target as CheckBox;
var idx:int;
if(cb.selected){
idx = cbs.indexOf(cb);
selectedCbs.push(cbs.splice(idx, 1)[0]);
if(selectedCbs.length >= 3){
for(var i:int=0; i<cbs.length; i++){
cbs.enabled = false;
}
}
} else {
idx = selectedCbs.indexOf(cb);
cbs.push(selectedCbs.splice(idx, 1)[0]);
if(selectedCbs.length == 2){
for(var i:int=0; i<cbs.length; i++){
cbs.enabled = true;
}
}
}
}

untitled88
11-11-2009, 02:19 PM
Thanks for the help. However, I'm getting 7 errors:

1013: The private attribute may be used only on class property definitions.
private var selectedCbs:Array = [];
//
1013: The private attribute may be used only on class property definitions.
private var setupCheckBoxes():void
//
1086: Syntax error: expecting semicolon before leftparen.
private var setupCheckBoxes():void
//
1084: Syntax error: expecting identifier before tripledot.
1084: Syntax error: expecting identifier before tripledot.
//
1013: The private attribute may be used only on class property definitions.
private function checkCart(e:MouseEvent):void
//
1084: Syntax error: expecting rightbrace before end of program.

Thanks

Greg SS
11-11-2009, 08:14 PM
yeah, there is a syntax error on the code...
private var setupCheckBoxes():void
should be
private function setupCheckBoxes():void

did you put this into your class file?

untitled88
11-11-2009, 08:27 PM
Yeah, still getting the errors?

Greg SS
11-11-2009, 08:45 PM
Repost the codes you have right now

untitled88
11-12-2009, 10:21 PM
package {
import fl.controls.CheckBox;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.text.TextField;

public class CheckBoxExample extends Sprite {
private var cb1:CheckBox;
private var cb2:CheckBox;
private var cb3:CheckBox;
private var cb4:CheckBox;
private var cb5:CheckBox;
private var cb6:CheckBox;
private var tf:TextField;
private var cbs:Array;
private var selectedCbs:Array=[];

public function CheckBoxExample() {
createTraceField();
setupCheckBoxes();
}
private function createTraceField():void {
tf = new TextField();
tf.width=200;
tf.height=200;
tf.x=100;
tf.y=10;
tf.border=true;
tf.text="You have selected:\n";
addChild(tf);
}
private function setupCheckBoxes():void {
cb1 = new CheckBox();
cb2 = new CheckBox();
cb3 = new CheckBox();
cb4 = new CheckBox();
cb5 = new CheckBox();
cb6 = new CheckBox();
cb1.label="A";
cb2.label="B";
cb3.label="C";
cb4.label="D";
cb5.label="E";
cb6.label="F";
cb1.y=10;
cb2.y=30;
cb3.y=50;
cb4.y=70;
cb5.y=90;
cb6.y=110;

cb1.addEventListener(MouseEvent.CLICK,updateCart);
cb2.addEventListener(MouseEvent.CLICK,updateCart);
cb3.addEventListener(MouseEvent.CLICK,updateCart);
cb4.addEventListener(MouseEvent.CLICK,updateCart);
cb5.addEventListener(MouseEvent.CLICK,updateCart);
cb6.addEventListener(MouseEvent.CLICK,updateCart);
//
addChild(cb1);
addChild(cb2);
addChild(cb3);
addChild(cb4);
addChild(cb5);
addChild(cb6);

cb1.addEventListener(Event.CHANGE, checkCart);
cb2.addEventListener(Event.CHANGE, checkCart);
cb3.addEventListener(Event.CHANGE, checkCart);
cb4.addEventListener(Event.CHANGE, checkCart);
cb5.addEventListener(Event.CHANGE, checkCart);
cb6.addEventListener(Event.CHANGE, checkCart);

cbs=[cb1,cb2,cb3,cb4,cb5,cb6];
}
private function updateCart(e:MouseEvent):void {
var cb:CheckBox=CheckBox(e.target);
tf.text="You have selected:\n";
if (cb1.selected==true) {
tf.appendText(cb1.label + "\n");
}
if (cb2.selected==true) {
tf.appendText(cb2.label + "\n");
}
if (cb3.selected==true) {
tf.appendText(cb3.label + "\n");
}
if (cb4.selected==true) {
tf.appendText(cb4.label + "\n");
}
if (cb5.selected==true) {
tf.appendText(cb5.label + "\n");
}
if (cb6.selected==true) {
tf.appendText(cb6.label + "\n");
}
}
private function checkCart(e:MouseEvent):void {
var cb:CheckBox=e.target as CheckBox;
if (cb.selected) {
checked++;
} else {
checked--;
}
if (checked<3) {
for (var i:int=0; i<cbs.length; i++) {
cbs[i].enabled=true;
}
} else {
for (i=0; i<cbs.length; i++) {
if (! cbs[i].selected) {
cbs[i].enabled=false;
}
}
}
}
}
}

Greg SS
11-13-2009, 12:53 PM
You confused the 2 samples i give you i think...
1. you need to add the integer variable checked
2. this is my fault, change the event type of checkChange from MouseEvent to Event

searchengineplacement101
11-13-2009, 03:15 PM
thanks for this helpful info.

promoting new website (http://www.skyrocketrevenues.com)