| 
| 
查看: 2769|回复: 2
 | 
as3 如何控制每个child array的boolean?
[复制链接] |  
 |  | 
 
| 如题,每当我click一个button后,就会把child 加到stage上。。 
 child是在array里的。。我要每个child都有自己的boolean。。请问要怎么弄?
 
 
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 发表于 5-2-2014 11:56 PM
|
显示全部楼层 
| 假设array的名称是 my_array. 按钮是 my_button
 物品是my_mc
 
 var my_array:Array = new Array();
 var my_button:Button = new My_Button();//在库中做好的按钮
 
 stage.addChild(my_button);
 my_button.addEventListener(MouseEvent.CLICK,action);
 
 function action (e:MouseEvent):void{
 var my_child:MovieClip = new My_Child();//如果有实体的话就在这边,没有的话就new MovieClip();
 my_child.my_boolean = false;
 my_array.push(my_child);
 }
 
 for(var i:i<3;i++){
 action();
 }
 
 my_array[0].my_boolean = false;
 my_array[1].my_boolean = true;
 my_array[2].my_boolean = true;
 
 trace(my_array[0].my_boolean);
 trace(my_array[1].my_boolean);
 trace(my_array[2].my_boolean);
 | 
 |  |  |  |
 
|  |  |  
|  |  | 
 |  | 
 
 
 楼主|
发表于 7-2-2014 11:06 PM
|
显示全部楼层 
| CelineHeng 发表于 5-2-2014 11:56 PM  假设array的名称是 my_array.
 按钮是 my_button
 物品是my_mc
 
   
 图中的上排是我的button.. click了会把child add 在下面的stage..
 
 当C和H靠近时,会create一条line..
 
 图中看到的是3个C连接着一个H.. 我要做的是H只可以接受一个C..也就是说只有一个C可以链接到H..
 要怎么使用boolean?还是有其他方法??
 
 我现在的code,全部在main class:
 line create在checkBond function里
 
 
 package
 {
 
 import flash.display.*;
 import flash.events.*;
 
 public class main extends MovieClip
 {
 public static var cArray:Array = new Array();
 public static var hArray:Array = new Array();
 public static var xArray:Array = new Array();
 public static var oArray:Array = new Array();
 
 var bondArray:Shape=new Shape();
 
 public function main()
 {
 addEventListener(MouseEvent.MOUSE_UP,stopAllDrag);
 
 add_c_mol.addEventListener(MouseEvent.MOUSE_DOWN, clickCmol);
 add_h_mol.addEventListener(MouseEvent.MOUSE_DOWN, clickHmol);
 add_x_mol.addEventListener(MouseEvent.MOUSE_DOWN, clickXmol);
 add_o_mol.addEventListener(MouseEvent.MOUSE_DOWN, clickOmol);
 
 addEventListener(Event.ENTER_FRAME,checkBond);
 }
 
 private function stopAllDrag(e:MouseEvent):void
 {
 stopDrag();
 }
 
 private function clickCmol(e:MouseEvent)
 {
 cArray.push(new C_mol());
 cArray[cArray.length - 1].x=112;
 cArray[cArray.length - 1].y=197;
 addChild(cArray[cArray.length - 1]);
 cArray[cArray.length - 1].addEventListener(MouseEvent.MOUSE_DOWN,dragCmol);
 cArray[cArray.length - 1].addEventListener(Event.ENTER_FRAME,trashC);
 }
 private function dragCmol(e:MouseEvent):void
 {
 e.target.startDrag();
 }
 private function trashC (e:Event):void
 {
 if(e.target.hitTestObject(trash))
 {
 e.target.visible=false;
 }
 if(e.target.y<180)
 {
 e.target.y=180;
 stopDrag();
 }
 }
 
 
 
 private function clickHmol(e:MouseEvent)
 {
 hArray.push(new H_mol());
 hArray[hArray.length - 1].x=280;
 hArray[hArray.length - 1].y=174;
 addChild(hArray[hArray.length - 1]);
 hArray[hArray.length - 1].addEventListener(MouseEvent.MOUSE_DOWN,dragHmol);
 hArray[hArray.length - 1].addEventListener(Event.ENTER_FRAME,trashH);
 }
 private function dragHmol(e:MouseEvent):void
 {
 e.target.startDrag();
 }
 private function trashH (e:Event):void
 {
 if(e.target.hitTestObject(trash))
 {
 e.target.visible=false;
 }
 if(e.target.y<152)
 {
 e.target.y=152;
 stopDrag();
 }
 }
 
 
 
 private function clickXmol(e:MouseEvent)
 {
 xArray.push(new X_mol());
 xArray[xArray.length - 1].x=474;
 xArray[xArray.length - 1].y=201;
 addChild(xArray[xArray.length - 1]);
 xArray[xArray.length - 1].addEventListener(MouseEvent.MOUSE_DOWN,dragXmol);
 xArray[xArray.length - 1].addEventListener(Event.ENTER_FRAME,trashX);
 }
 private function dragXmol(e:MouseEvent):void
 {
 e.target.startDrag();
 }
 private function trashX (e:Event):void
 {
 if(e.target.hitTestObject(trash))
 {
 e.target.visible=false;
 }
 if(e.target.y<186)
 {
 e.target.y=186;
 stopDrag();
 }
 }
 
 
 private function clickOmol(e:MouseEvent)
 {
 oArray.push(new O_mol());
 oArray[oArray.length - 1].x=648;
 oArray[oArray.length - 1].y=189;
 addChild(oArray[oArray.length - 1]);
 oArray[oArray.length - 1].addEventListener(MouseEvent.MOUSE_DOWN,dragOmol);
 oArray[oArray.length - 1].addEventListener(Event.ENTER_FRAME,trashO);
 }
 private function dragOmol(e:MouseEvent):void
 {
 e.target.startDrag();
 }
 private function trashO (e:Event):void
 {
 if(e.target.hitTestObject(trash))
 {
 e.target.visible=false;
 }
 if(e.target.y<187)
 {
 e.target.y=187;
 stopDrag();
 }
 }
 
 private function checkBond(e:Event):void
 {
 bondArray.graphics.clear();
 for (var i:uint = 0; i < main.cArray.length; i++)
 {
 for (var j:uint = 0; j < main.hArray.length; j++)
 {
 if (Math.pow(Math.abs(main.cArray.x - main.hArray[j].x),2)+Math.pow(Math.abs(main.cArray.y - main.hArray[j].y),2) < Math.pow(100,2))
 {
 //trace("yes");
 bondArray.graphics.lineStyle(8,00000, 1);
 bondArray.graphics.moveTo(main.cArray.x,main.cArray.y);
 bondArray.graphics.lineTo(main.hArray[j].x,main.hArray[j].y);
 addChildAt(bondArray,0);
 }
 else
 {
 //bondArray.graphics.clear();
 
 }
 }
 }
 }
 
 
 
 }
 }
 
 本帖最后由 KaySea 于 7-2-2014 11:08 PM 编辑
 
 
 | 
 |  |  |  |
 
|  |  |  
|  |  |  |  | 
            本周最热论坛帖子 |