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);
}
}
}

浙公网安备 33010602011771号