vini123

博客园 首页 新随笔 联系 订阅 管理
小练习:在场景中放置1Sprite,绘制矢量矩形后让其在400*400的范围内移动。
若碰到边界就转向,并分裂出一个新的Sprite,新的Sprite和原有Sprite一样,移
动和产生更新的Sprite。当1Sprite分裂过3次后再次碰到边界,将其清除。
 1 package 
 2 {
 3     import flash.display.Sprite;
 4     import flash.events.Event;
 5     [SWF(width = "400",height = "400",backgroundColor = "#159357")]
 6     public class Main extends Sprite
 7     {
 8         private var sArr:Array = [];
 9         private var colorArr = ["0xff00ff","0x00ffff","0xffff00","0x0000ff","0x00ff00","0xff0000"];
10         private var sNum:int = 0;
11         public function Main():void
12         {
13             DrawRect();
14         }
15 
16         private function DrawRect()
17         {
18             sNum++;
19             var num:int=int(5*Math.random());
20             var s:Sprite=new Sprite();
21             s.graphics.beginFill(colorArr[num],0.6);
22             s.graphics.drawRect(0,0,10,10);
23             s.graphics.endFill();
24             s.x=int(400*Math.random());
25             s.y=int(400*Math.random());
26             addChild(s);
27             s.addEventListener(Event.ENTER_FRAME,enterHandler);
28             if (s.name.length >= 9)
29             {
30                 s.name = "1";
31             }
32             if (num%2==0)
33             {
34                 s.mouseChildren = false;
35             }
36             else
37             {
38                 s.mouseChildren = true;
39             }
40             sArr.push(s);
41         }
42         private function enterHandler(e:Event)
43         {
44             if (e.target.mouseChildren == false)
45             {
46                 e.target.x +=  5;
47             }
48             else if (e.target.mouseChildren==true)
49             {
50                 e.target.x -=  5;
51             }
52             if (e.target.x>=(stage.stageWidth-e.target.width)||e.target.x<=0)
53             {
54                 judgeFun((e.target as Sprite));
55             }
56         }
57 
58         private function judgeFun(mc:Sprite)
59         {
60             trace(mc.name);
61             var k:int = int(mc.name);
62             k++;
63             if (k<4)
64             {
65                 mc.name = String(k);
66             }
67             else
68             {
69                 trace("over");
70                 for (var i=0; i<sArr.length; i++)
71                 {
72                     sArr[i].removeEventListener(Event.ENTER_FRAME,enterHandler);
73                     removeChild(sArr[i]);
74                 }
75                 return;
76             }
77 
78             if (mc.mouseChildren == false)
79             {
80                 mc.mouseChildren = true;
81             }
82             else
83             {
84                 mc.mouseChildren = false;
85             }
86 
87             DrawRect();
88         }
89     }
90 }

 

posted on 2012-05-16 11:07  黑夜丶残枫  阅读(138)  评论(0)    收藏  举报