Flash 摇号器(支持姓名导入)

寒假无事,朋友要做个年终奖发奖用的抽奖摇号器。支持名字导入(用excel保存为123.xml文件,且在相同目录下xml文件夹内,123.xml中第一列为序号,第二列为姓名),显示,列出等功能。现将我做的一个版本发上来跟大家分享下~~

效果图

具体实现代码如下:


package classes
{
	import flash.display.Sprite;
	import fl.controls.TextInput;
	import flash.text.TextFormat;
	import fl.controls.Button;
	import fl.controls.Label;
	import fl.controls.TextArea;
	import flash.events.MouseEvent;
	import flash.utils.Timer;
	import flash.events.TimerEvent;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flashx.textLayout.formats.TextAlign;
	import flash.text.engine.TabAlignment;
	import flash.events.*;
	import flash.net.*;
	import flash.utils.*;
	import flash.sensors.Accelerometer;
	import fl.transitions.easing.Strong;
	import flash.net.*;

	public class yaohao extends Sprite
	{
		//==================================================
		private var okB:Button = new Button();
		private var startB:Button =new Button();
		private var stopB:Button= new Button();
		private var outB:Button= new Button();
		private var buttonStyle:TextFormat= new TextFormat();
		//=====================================================
		private var showName:Label = new Label();
		private var showNameStyle:TextFormat = new TextFormat();
		//====================================
		private var showNames:TextArea = new TextArea();
		private var showNamesStyle:TextFormat = new TextFormat();
		//=======================================
		private var originalLength:uint = new uint  ;//数据导入时的初始长度namesArray 
		//private var originalNumArray:Array = new Array();
		//private var lastNumArray:Array = new Array();
		//==================================
		private var timer:Timer;
		private var nameList:String;
		//==================================
		private var namesArray:Array=new Array();//二维数组【【ID】【name】;【】【】。。。】
		private var lastNamesArray:Array = new Array();
		private var jiazai:URLLoader=new URLLoader();


		public function yaohao()
		{
			// constructor code
			initComponents();
		}

		public function initComponents():void
		{
			this.input();
		}
		//初始化个个器件。
		private function input():void
		{

			//================================
			this.buttonStyle.font = "微软雅黑";
			this.buttonStyle.color = 0x000000;
			this.buttonStyle.size = 16;
			this.okB.label = "导入数据";
			this.okB.move(10,114);
			this.okB.width = 104;//.setsize( , );
			this.okB.height = 40;
			this.okB.setStyle("testFormat",this.buttonStyle);
			this.okB.addEventListener(MouseEvent.CLICK,inputNum);
			stage.addChild(okB);

			//===============================加入showName组件。
			this.showNameStyle.font = "微软雅黑";
			this.showNameStyle.color = 0xFFFFFF;
			this.showNameStyle.size = 16;
			this.showName.move(327.85,353.9);
			this.showName.setSize(104,39.95);
			this.showName.autoSize = TextFieldAutoSize.CENTER;
			this.showName.setStyle("textFormat",this.showNameStyle);
			this.showName.text = "开始摇奖吧!";
			stage.addChild(this.showName);
			//==============================创建开始按钮。
			this.startB.label = "开始摇奖";
			this.startB.move(247.9,497.85);
			this.startB.setSize(104,40);
			this.startB.setStyle("textFormat",this.buttonStyle);
			this.startB.addEventListener(MouseEvent.CLICK,startNumArrayShow);
			stage.addChild(this.startB);
			//=============================
			this.stopB.label = "得奖";
			this.stopB.move(395.85,495.85);
			this.stopB.setSize(104,40);
			this.stopB.setStyle("textFormat",this.buttonStyle);
			this.stopB.addEventListener(MouseEvent.CLICK,getNamesArray);
			stage.addChild(this.stopB);
			//===================================

			//this.showNames=new TextArea();
			this.showNamesStyle.font = "微软雅黑";
			this.showNamesStyle.size = 14;
			this.showNamesStyle.color = 0x000000;
			this.showNames.x = 717.75;
			this.showNames.y = 16;
			this.showNames.width = 113.95;
			this.showNames.height = 149.95;
			this.showNames.textField.height = 149.95;
			this.showNames.textField.width = 113.95;
			this.showNames.alpha = 1;
			this.showNames.setStyle("textFormat",this.showNamesStyle);
			this.showNames.wordWrap = true;
			nameList = "--抽奖结果--\n";
			this.showNames.text = nameList;
			stage.addChild(this.showNames);
			//===============
			this.outB.label = "导出名单";
			this.outB.move(727.95,175);
			this.outB.setSize(104,40);
			this.outB.setStyle("textFormat",this.buttonStyle);
			this.outB.addEventListener(MouseEvent.CLICK,exportData);
			stage.addChild(this.outB);
			//==========================
			var delay:Number = 10;
			var repeat:int = 0;

			this.timer = new Timer(delay,repeat);
			//================

			this.startB.enabled = false;
			this.stopB.enabled = false;




		}
		//初始化器件结束

		private function inputNum(eve:MouseEvent):void
		{


			jiazai.load(new URLRequest("xml/123.xml"));
			jiazai.addEventListener(Event.COMPLETE,wanCheng);
			this.okB.enabled = false;

		}
		private function wanCheng(evt:Event):void
		{
			var a:XML = new XML(jiazai.data);
			trace(a.children().length());
			var cells:XMLList = a.children()[4].children()[0].children();
			for each (var cell:XML in cells)
			{
				var namesList:Array = [cell.children()[0].children(),cell.children()[1].children()];
				namesArray.push(namesList);
			}

			trace(namesArray);
			trace(namesArray.length);
			this.originalLength = namesArray.length;//初始化 原始长度
			if (namesArray.length > 0)
			{
				this.startB.enabled = true;
			}
			this.jiazai = null;

		}

		private function startNumArrayShow(eve:MouseEvent):void
		{
			//trace("here");
			if (this.namesArray.length > 1)
			{
				if (this.startB.enabled)
				{
					this.startB.enabled = false;
					timer.addEventListener(TimerEvent.TIMER,showNamesArray);

					//时间控制方法。;
					timer.start();
					this.stopB.enabled = true;
				}
				else
				{
				}
			}
			else
			{
				this.startB.enabled = false;
				this.stopB.enabled = false;
				this.showName.text = "抽奖完毕";
				this.okB.enabled = false;

			}

		}
		//时间控制方法。

		private function showNamesArray(even:TimerEvent):void
		{
			//trace("here?");
			var i:uint=uint(Math.round(Math.random() * (this.namesArray.length-1)));
			var j:uint = 1;
			if (i != 0)
			{
				this.showName.text = namesArray[i][j].toString();
				trace(i+" | "+j);
			}
			else
			{
			}


		}
		// 获奖按钮的实现方法===========================
		var order:uint = 0;

		private function getNamesArray(eve:MouseEvent):void
		{
			timer.stop();
			if (this.namesArray.length > 1)
			{
				this.stopB.enabled = false;
				this.startB.enabled = true;
				this.okB.enabled = false;

				//breakout:while (true)
				//{

				//**************************************************************************
				var getTheNameKey:String=this.namesArray[1+Math.round(Math.random()*(this.namesArray.length-2))][0];
				//trace(typeof(getTheNameKey)+ " : "+getTheNameKey);
				//trace(typeof(this.namesArray[i][0].toString())+ " : "+this.namesArray[i][0]);
				for(var i:int=0;i<=this.namesArray.length;i++)
				{
					//trace(typeof(getTheNameKey)+ " : "+getTheNameKey);
					//trace(typeof(this.namesArray[i][0].toString())+ " : "+this.namesArray[i][0]);

					if (getTheNameKey == this.namesArray[i][0].toString())
					{
						trace(typeof(this.namesArray[i][0].toString())+ " : "+this.namesArray[i][0]);
						trace(typeof(getTheNameKey)+ " : "+getTheNameKey);
						order++;

						var theName:String = this.namesArray[i][1];
						var nameRow:Array = [String("第 " + order + " 个是: "),this.namesArray[i][0],this.namesArray[i][1]];

						this.lastNamesArray.push(nameRow);
						this.namesArray.splice(i,1);
						this.showName.text = String(theName);
						this.nameList +=  "第" + order + "名 : " + theName + " \n";
						//trace("?");
						break;
						//break breakout;
					}
					else
					{
					}
				}
				//getTheNameKey="";
				//}

			}
			else
			{
				this.stopB.enabled = false;
				this.startB.enabled = false;
				this.showName.text = "抽奖完毕";
				this.okB.enabled = false;

			}
			//trace("??");
			this.showNames.text = this.nameList;
			trace(showNames.text);
			trace(this.lastNamesArray);
			trace(this.lastNamesArray.length);

		}
		private function exportData(eve:MouseEvent):void
		{
			
			var resultText:String="";
			for each( var e:String in this.lastNamesArray)
			{
				resultText +=e+"\t\t\n";
			}
			trace(resultText);

			var file:FileReference = new FileReference;
			

			file.save(resultText,"results.txt");



		}










	}



}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值