AS3----游戏中显示加减血数值显示效果

如题:早先天,因为接到任务,要写个数值显示效果。

于是,自己先用Flash cs编辑了一下动画,知道了参数后,再到AS3项目中,使用greenSock的TweenMax来实现即可。

转到AS3中,不到20分钟,即可写出来,只是Flash CS编辑动画的时候,比较需要耐心。


下载运行实例:游戏战斗显示数据效果


测试运行类:

package
{
	import controlsEvents.NumericeUpDownEvent;
	
	import flash.display.Bitmap;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.events.MouseEvent;
	import flash.geom.ColorTransform;
	import flash.utils.getTimer;

	[SWF(width="1200",height="720")]
	/**
	 * 游戏战斗显示数据效果(双倍加血,暴击减血,普通加血,普通减血)
	 * @author Jave.Lin
	 */	
	public class Main extends Sprite
	{
		private const LEFT:uint=37;
		private const UP:uint=38;
		private const RIGHT:uint=39;
		private const DOWN:uint=40;
		
		private var _doubleAddHp:DoubleAddHp;
		private var _doubleSubHp:DoubleSubHp;
		private var _addHp:AddHp;
		private var _subHp:SubHp;
		
		private var _instructionLabel:Label;
		private var _instructionLabelSourceX:Number=0;
		private var _instructionLabelSourceY:Number=0;
		
		private var _doubleAddHpLabel:Label;
		private var _doubleAddHpNumericUpDown:NumericUpDown;
		private var _doubleSubHpLabel:Label;
		private var _doubleSubHpNumericUpDown:NumericUpDown;
		private var _addHpLabel:Label;
		private var _addHpNumericUpDown:NumericUpDown;
		private var _subHpLabel:Label;
		private var _subHpNumericUpDown:NumericUpDown;
		
		private var _shakeInterval:uint=1500;
		private var _lastShakeTime:uint=0;
		
		public function Main()
		{
			stage.color=0x888888;
			stage.frameRate=60;
			stage.scaleMode=StageScaleMode.NO_SCALE;
			stage.align=StageAlign.TOP_LEFT;
			
//			var bmp:Bitmap=new Bitmap(new Number0(0,0));
//			addChild(bmp);
			
			_doubleAddHp=new DoubleAddHp(987654321);
			addChild(_doubleAddHp);			
			
			_doubleAddHp.x=300;
			_doubleAddHp.y=100;
			
			_doubleSubHp=new DoubleSubHp(123456789);
			addChild(_doubleSubHp);
			
			_doubleSubHp.x=300;
			_doubleSubHp.y=200;
			
			_addHp=new AddHp(321654987);
			addChild(_addHp);
			
			_addHp.x=300;
			_addHp.y=300;
			
			_subHp=new SubHp(987654321);
			addChild(_subHp);
			
			_subHp.x=300;
			_subHp.y=400;
			
			_doubleAddHpLabel=new Label("双倍加血数值:");
			addChild(_doubleAddHpLabel);
			_doubleAddHpLabel.fontSize=15;
			_doubleAddHpLabel.x=500;
			_doubleAddHpLabel.y=100;
			
			_doubleAddHpNumericUpDown=new NumericUpDown();
			addChild(_doubleAddHpNumericUpDown);
			_doubleAddHpNumericUpDown.minValue=0;
			_doubleAddHpNumericUpDown.maxValue=999999999;
			_doubleAddHpNumericUpDown.x=_doubleAddHpLabel.x+_doubleAddHpLabel.width;
			_doubleAddHpNumericUpDown.y=_doubleAddHpLabel.y;
			_doubleAddHpNumericUpDown.addEventListener(NumericeUpDownEvent.VALUE_CHANGED,onDoubleAddHpValueChanged);
			
			_doubleSubHpLabel=new Label("暴击减血数值:");
			addChild(_doubleSubHpLabel);
			_doubleSubHpLabel.fontSize=15;
			_doubleSubHpLabel.x=500;
			_doubleSubHpLabel.y=200;
			
			_doubleSubHpNumericUpDown=new NumericUpDown();
			addChild(_doubleSubHpNumericUpDown);
			_doubleSubHpNumericUpDown.minValue=0;
			_doubleSubHpNumericUpDown.maxValue=999999999;
			_doubleSubHpNumericUpDown.x=_doubleSubHpLabel.x+_doubleSubHpLabel.width;
			_doubleSubHpNumericUpDown.y=_doubleSubHpLabel.y;
			_doubleSubHpNumericUpDown.addEventListener(NumericeUpDownEvent.VALUE_CHANGED,onDoubleSubHpValueChanged);
			
			_addHpLabel=new Label("普通加血数值:");
			addChild(_addHpLabel);
			_addHpLabel.fontSize=15;
			_addHpLabel.x=500;
			_addHpLabel.y=300;
			
			_addHpNumericUpDown=new NumericUpDown();
			addChild(_addHpNumericUpDown);
			_addHpNumericUpDown.minValue=0;
			_addHpNumericUpDown.maxValue=999999999;
			_addHpNumericUpDown.x=_addHpLabel.x+_addHpLabel.width;
			_addHpNumericUpDown.y=_addHpLabel.y;
			_addHpNumericUpDown.addEventListener(NumericeUpDownEvent.VALUE_CHANGED,onAddHpValueChanged);
			
			_subHpLabel=new Label("普通减血数值:");
			addChild(_subHpLabel);
			_subHpLabel.fontSize=15;
			_subHpLabel.x=500;
			_subHpLabel.y=400;
			
			_subHpNumericUpDown=new NumericUpDown();
			addChild(_subHpNumericUpDown);
			_subHpNumericUpDown.minValue=0;
			_subHpNumericUpDown.maxValue=999999999;
			_subHpNumericUpDown.x=_subHpLabel.x+_subHpLabel.width;
			_subHpNumericUpDown.y=_subHpLabel.y;
			_subHpNumericUpDown.addEventListener(NumericeUpDownEvent.VALUE_CHANGED,onSubHpValueChanged);
			
			_instructionLabel=new Label("按方向“左(双倍加血)、上(暴击减血)、右(普通加血)、下(普通减血)”可以查看效果");
			addChild(_instructionLabel);
			_instructionLabelSourceX=_instructionLabel.x=(1200-_instructionLabel.width)/2;
			_instructionLabelSourceY=_instructionLabel.y=450;
			_instructionLabel.fontSize=14;
			_instructionLabel.fontColor=0xffff00;
			
			stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyDown);
			stage.addEventListener(Event.ENTER_FRAME,onEnterFrame);
		}
		
		private function onEnterFrame(e:Event):void
		{
			if((getTimer()-_lastShakeTime)>_shakeInterval)
			{
				trace("shake on : ",getTimer());
				trace("_instructionLabelSourceX,_instructionLabelSourceY : ",
					_instructionLabelSourceX,_instructionLabelSourceY);
				_lastShakeTime=getTimer();
				Utils.shake(
					_instructionLabel,
					200,100,
					Utils.RandomDirecitonShake,0,
					_instructionLabelSourceX,_instructionLabelSourceY,
					0,0);
			}
		}
		
		private function onSubHpValueChanged(e:NumericeUpDownEvent):void
		{
			_subHp.v=e.value;
		}
		
		private function onAddHpValueChanged(e:NumericeUpDownEvent):void
		{
			_addHp.v=e.value;
		}
		
		private function onDoubleSubHpValueChanged(e:NumericeUpDownEvent):void
		{
			_doubleSubHp.v=e.value;
		}
		
		private function onDoubleAddHpValueChanged(e:NumericeUpDownEvent):void
		{
			_doubleAddHp.v=e.value;
		}
		
		private function onKeyDown(e:KeyboardEvent):void
		{
			switch(e.keyCode)
			{
				case LEFT:
				{
					_doubleAddHp.action();
					break;
				}
				case UP:
				{
					_doubleSubHp.action();
					break;
				}
				case RIGHT:
				{
					_addHp.action();
					break;
				}
				case DOWN:
				{
					_subHp.action();
					break;
				}
					
				default:
				{
					break;
				}
			}
		}
	}
}
运行效果图:


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值