flash的一个展示效果

需求其实很简单,就是实施反映当前哪些房间住人,有几个人

主要客户希望用直观的平面方式展示出来,所以综合考虑后用flash来实现

也是第二次用as3这东东写应用,哈哈

先看效果图:

因为楼层和布局不会变所以没有做成可配置的

下面是代码:

场景中第一帧上面的代码

stop();
//加载需要的包
import com.greensock.*;
import com.greensock.easing.*;
import flash.text.TextFormat;
import fl.managers.StyleManager;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.display.MovieClip;
 
//设置字体样式
var style:TextFormat = new TextFormat();
style.size = 24;
style.color = 0x000000;
StyleManager.setStyle("textFormat",style);
 
//画布大小;
var sw:Number = stage.stageWidth;
var sh:Number = stage.stageHeight;
 
//创建房子显示对象
var houses:houseList=new houseList();
addChild(houses);
 
//选项显示对象
var msg:showMsg = new showMsg();
addChild(msg);
msg.x=(stage.stageWidth-msg.width)/2;
msg.y=(msg.height*-1)-20;
msg.ey=Number((stage.stageHeight-msg.height)/2);
msg.alpha = 0;
 
//楼层容器
var floors:floors_mc = new floors_mc();
this.addChild(floors);
floors.alpha=0;
floors.visible=false;

house类的代码

package
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import com.greensock.*;
	import com.greensock.easing.*;
	import flash.text.TextFormat;
	import fl.managers.StyleManager;
	import fl.data.DataProvider;
	/**
	 * ...
	 * @author purecolor@foxmail.com
	 */
	public class house extends MovieClip
	{
		private var _floors:DataProvider;
		private var _name:String;
		private var _houseName:String;
		public function house() 
		{
			super();
			_floors = new DataProvider();
			_name = ((this.toString()).split(" "))[1].replace("\]","");
			init();
		}
		private function init():void
		{
			switch(_name) {
				case("house_1"):
					_houseName = "一号楼";
					_floors.addItem( { label:"一层", data:"house_1_floor_1" } );
					_floors.addItem( { label:"二层", data:"house_1_floor_2" } );
					_floors.addItem( { label:"三层", data:"house_1_floor_3" } );
					_floors.addItem( { label:"四层", data:"house_1_floor_4" } );
				break;
				case("house_2"):
					_houseName = "二号楼";
					_floors.addItem( { label:"一层", data:"house_2_floor_1" } );
					_floors.addItem( { label:"二层", data:"house_2_floor_2" } );
					_floors.addItem( { label:"三层", data:"house_2_floor_3" } );
				break;
				case("house_3"):
					_houseName = "三号楼";
					_floors.addItem( { label:"一层", data:"house_3_floor_1" } );
					_floors.addItem( { label:"二层", data:"house_3_floor_2" } );
				break;
				case("house_4"):
					_houseName = "六号楼";
					_floors.addItem( { label:"一层", data:"house_4_floor_1" } );
					_floors.addItem( { label:"二层", data:"house_4_floor_2" } );
				break;
				case("house_5"):
					_houseName = "五号楼";
					_floors.addItem( { label:"一层", data:"house_5_floor_1" } );
					_floors.addItem( { label:"二层", data:"house_5_floor_2" } );
				break;
			}
			this.addEventListener(MouseEvent.MOUSE_OVER, handleOver);
			this.addEventListener(MouseEvent.MOUSE_OUT, handleOut);
			this.addEventListener(MouseEvent.CLICK, handleClick);
		}
		private function handleOver(e:MouseEvent):void 
		{
			TweenMax.to(this, 1, {glowFilter:{color:0x9900ff, alpha:1, blurX:10, blurY:10, strength:2}});
		}
		private function handleOut(e:MouseEvent):void 
		{
			TweenMax.to(this, 1, {glowFilter:{alpha:0}});
		}
		private function handleClick(e:MouseEvent):void
		{
			var root:MovieClip = MovieClip(root as MovieClip);
			var msg:MovieClip = root["msg"];
			var timeline:TimelineLite = new TimelineLite();
			timeline.append(new TweenMax(msg, 0.5, { y:msg.height*-1, alpha:0 , ease:Quad.easeInOut}));
			timeline.append(new TweenMax(msg, 0.5, { y:msg.ey, alpha:1 , ease:Quad.easeInOut} ));
			msg.nameTxt.text = _houseName;
 
			msg.msgList.clearSelection();
			msg.msgList.dataProvider = _floors;
 
		}
	}
 
}

floors_mc类的代码

package  
{
	import com.greensock.*;
	import com.greensock.easing.*;
	import fl.managers.StyleManager;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.display.MovieClip;
	import flash.utils.Timer;
	import flash.events.TimerEvent;
 
	/**
	 * ...
	 * @author purecolor@foxmail.com
	 */
	public class floors_mc extends MovieClip
	{
		private var __floorsClose:MovieClip;
		public function floors_mc() 
		{
			super();
			//init();
		}
		private function init():void
		{
			__floorsClose = getChildByName("floors_close") as MovieClip;
			__floorsClose.addEventListener(MouseEvent.CLICK, handleCloseFloor);
		}
		private function handleCloseFloor(e:MouseEvent):void{
			TweenMax.to(this, 1, {alpha:0 , ease:Back.easeOut });
			var times:Timer = new Timer(500,1);
			times.addEventListener(TimerEvent.TIMER, setvf);
			times.start();
		}
		private function setvf(e:TimerEvent):void
		{
			if(this.numChildren>2) this.removeChild(this.getChildAt(2));
			this.visible = false;
		}
		public function showFloor(e:String):void
		{
			if(this.numChildren>2) this.removeChild(this.getChildAt(2));
			var _hid:String = e.split("_")[0];
			var _fid:String = e.split("_")[1];
			var floor_mc:MovieClip;
			var hf:String = "house_" + _hid + "_floor_" + _fid;
			switch(hf) {
				case("house_1_floor_1"):
					floor_mc = new house_1_floor_1;
				break;
				case("house_1_floor_2"):
					floor_mc = new house_1_floor_2;
				break;
				case("house_1_floor_3"):
					floor_mc = new house_1_floor_3;
				break;
				case("house_1_floor_4"):
					floor_mc = new house_1_floor_4;
				break;
				case("house_2_floor_1"):
					floor_mc = new house_2_floor_1;
				break;
				case("house_2_floor_2"):
					floor_mc = new house_2_floor_2;
				break;
				case("house_2_floor_3"):
					floor_mc = new house_2_floor_3;
				break;
				case("house_3_floor_1"):
					floor_mc = new house_3_floor_1;
				break;
				case("house_3_floor_2"):
					floor_mc = new house_3_floor_2;
				break;
				case("house_4_floor_1"):
					floor_mc = new house_4_floor_1;
				break;
				case("house_4_floor_2"):
					floor_mc = new house_4_floor_2;
				break;
				case("house_5_floor_1"):
					floor_mc = new house_5_floor_1;
				break;
				case("house_5_floor_2"):
					floor_mc = new house_5_floor_2;
				break;
			}
			this.addChild(floor_mc);
			floor_mc.y = 50;
			floor_mc.alpha = 0;
			TweenMax.to(floor_mc, 1, {alpha:1 , ease:Back.easeOut } );
			trace(this.numChildren);
		}
	}
 
}

room类的代码

package  
{
	import fl.controls.Label;
	import flash.display.MovieClip;
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	import com.greensock.*;
	import com.greensock.easing.*;
	import flash.events.MouseEvent;
	import flash.geom.PerspectiveProjection;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
	/**
	 * ...
	 * @author purecolor@foxmail.com
	 */
	public class room extends MovieClip
	{
		private var _name:String;
		private var _item:XMLList;
		private var _house:String;
		public function room() 
		{
			this.addEventListener(Event.ADDED_TO_STAGE, handleAdded);
		}
		private function handleAdded(e:Event):void
		{
			_name = (((this.toString()).split(" "))[1].replace("\]", "").split("_"))[1];
			var xmlData:XML = MovieClip(root as MovieClip)["xmlData"];
			_item = xmlData.house.floor.room.(@num  == _name );
			if (_item.@roomer > 0) {
				TweenMax.to(this, 1, {colorTransform:{tint:0xF22408, tintAmount:0.4}});
			}
			if (int(_name)<2100||int(_name)>3100) {
				for (var i:int = 0, len:int = _item.@roomer; i < len; i++) {
					var _per:per = new per;
					this.addChild(_per);
					_per.y = this.height / 2;
					_per.x = (this.width - 16 * len) / 2+16*i;
				}
			}
 
			if (_item.@roomer > 0) showName(_item);
		}
		private function showName(e:XMLList):void {
			var _shape:MovieClip = new MovieClip;
			var len:Number = e.children().length();
			var _h:Number = len * 20;
			var _tw:Number = 0;
 
			for (var i:int = 0; i < len; i++)
			{
				var __i:Number = ((e.pre[i].@name).toString()).length * 14;
				_tw = (__i > _tw)?__i:_tw;
			}
 
			var __w:Number = (_tw > this.width)?(_tw - this.width) / 2:0;
			var _maxw:Number = (_tw > this.width)?_tw:this.width;
			var x:Number = (this.width - (this.width)) / 2-__w, y:Number = 0;
			var ud:Boolean = false;
			var _w:Number = this.width + __w * 2;
 
			if (this.y > this.parent.height/4) {
				y = this.height + 5;
				ud = true;
			}else {
				y = -_h - 5;
				ud = false;
			}
 
			if (len > 0) {
				_shape.graphics.lineStyle(1, 0x000000);
				_shape.graphics.beginFill(0xffffff);
				_shape.graphics.drawRoundRect(x, y, _w, _h, 6);
				if (ud) {
					//下
					_shape.graphics.moveTo(this.width/2-5, y);
					_shape.graphics.lineTo(this.width/2, y-5);
					_shape.graphics.lineTo(this.width/2+5, y);
				}else {
					//上
					_shape.graphics.moveTo(this.width/2-5, y+_h);
					_shape.graphics.lineTo(this.width/2, y+_h+5);
					_shape.graphics.lineTo(this.width/2+5, y+_h);
				}
				_shape.graphics.endFill();
				addChild(_shape);				
				var _nameLabel:TextField = new TextField();
				_shape.addChild(_nameLabel);
				_nameLabel.width = _maxw;
				_nameLabel.autoSize = TextFieldAutoSize.CENTER ;
				//_nameLabel.border = true;
				if(x<0) _nameLabel.x -= (Math.abs(x));
				trace(x);
				trace(_nameLabel.x);
				trace('---');
				for (var _i:int = 0; _i < len; _i++)
				{
					_nameLabel.appendText(e.pre[_i].@name+"\n");
				}
				if (ud) {
					_nameLabel.y=y+(_h-_nameLabel.height)/2;
				}else {
					_nameLabel.y = y+(_h-_nameLabel.height)/2;
				}
			}
		}
	}
 
}

showMsg类的代码

package  
{
	import fl.controls.Label;
	import fl.controls.List;
	import flash.display.MovieClip;
	import com.greensock.*;
	import com.greensock.easing.*;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.text.TextFormat;
	import fl.managers.StyleManager;
	/**
	 * ...
	 * @author purecolor@foxmail.com
	 */
	public class showMsg extends MovieClip
	{
		private var __btnClose:MovieClip;
		private var __msgList:List;
		private var __nameTxt:Label;
		public var ey:Number;
		public function showMsg() 
		{
			super();
			__btnClose = getChildByName("btnClose") as MovieClip;
			__msgList = getChildByName("msgList") as List;
			__nameTxt = getChildByName("nameTxt") as Label;
			__msgList.rowHeight = 36;
			__btnClose.addEventListener(MouseEvent.CLICK, handleClick);
			__msgList.addEventListener(Event.CHANGE, showData);
		}
		function handleClick(e:MouseEvent):void
		{
			TweenMax.to(this, 0.5, { y:this.height*-1, alpha:0 , ease:Back.easeOut});
		}
		function showData(e:Event):void
		{
			var tid:String=e.target.selectedItem.data;
			TweenMax.to(this, 0.5, { y:this.height * -1, alpha:0 , ease:Back.easeOut } );
			var root:MovieClip = MovieClip(root as MovieClip);
			var floor_mc:MovieClip;
			switch(tid) {
				case("house_1_floor_1"):
					floor_mc = new house_1_floor_1;
				break;
				case("house_1_floor_2"):
					floor_mc = new house_1_floor_2;
				break;
				case("house_1_floor_3"):
					floor_mc = new house_1_floor_3;
				break;
				case("house_1_floor_4"):
					floor_mc = new house_1_floor_4;
				break;
				case("house_2_floor_1"):
					floor_mc = new house_2_floor_1;
				break;
				case("house_2_floor_2"):
					floor_mc = new house_2_floor_2;
				break;
				case("house_2_floor_3"):
					floor_mc = new house_2_floor_3;
				break;
				case("house_3_floor_1"):
					floor_mc = new house_3_floor_1;
				break;
				case("house_3_floor_2"):
					floor_mc = new house_3_floor_2;
				break;
				case("house_4_floor_1"):
					floor_mc = new house_4_floor_1;
				break;
				case("house_4_floor_2"):
					floor_mc = new house_4_floor_2;
				break;
				case("house_5_floor_1"):
					floor_mc = new house_5_floor_1;
				break;
				case("house_5_floor_2"):
					floor_mc = new house_5_floor_2;
				break;
			}
			root["floors"].visible = true;
			TweenMax.to(root["floors"], 2, {alpha:1 , ease:Back.easeOut } );
			root["floors"].addChild(floor_mc);
			floor_mc.y = 50;
			//trace(root["floors"].numChildren);
			//trace(root["floors"]+" : "+floor_mc);
		}
	}
 
}

转载于:https://www.cnblogs.com/purecolor/archive/2011/07/19/2110148.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值