2016-10-13 00:16:48 点击量:11 标签: 收藏本文
[as3]as3实现屏幕切换震动的效果 as3屏幕
- package tools {
- import flash.display.DisplayObject;
- import flash.events.TimerEvent;
- import flash.utils.Timer;
- public class Earthquake {
- /**
- * 参数
- */
- private var _timer:Timer;
- private var _displayObject:DisplayObject;
- private var _originalX:int;
- private var _originalY:int;
- private var _intensity:int;
- private var _intensityOffset:int;
- /**
- * 时间
- */
- private var _seconds:Number;
- /**
- * 方向
- */
- public static const LEFT_RIGHT_UP_DOWN:int = 0;
- public static const LEFT_RIGHT:int = 1;
- public static const UP_DOWN:int = 2;
- /**
- * 帧频
- */
- public static const FRAME_RATE:int = 60;
- /**
- * 方向
- */
- private var _direction:int;
- /**
- * 震动中
- */
- private var _bShaking:Boolean = false;
- /**
- * 是否自动销毁
- */
- private var _bDestroy:Boolean = false;
- /**
- * 对一个显示对象应用地震效果。
- * @param displayObject 抖动对象
- * @param intensity 强度
- * @param seconds 持续时间 秒
- * @param direction 方向
- * @param autoDestroy 自动销毁
- */
- public function Earthquake(displayObject:DisplayObject, intensity:Number = 10, seconds:Number = 1, direction:int = 0, autoDestroy:Boolean = false):void
- {
- _displayObject = displayObject;
- _originalX = displayObject.x;
- _originalY = displayObject.y;
- _intensity = intensity;
- _intensityOffset = intensity / 2;
- _seconds = seconds;
- _direction = direction;
- _bDestroy = autoDestroy;
- }
- /**
- * 开始后抖动
- */
- public function go():void
- {
- if (_bShaking) return;
- _bShaking = true;
- var msPerUpdate:int = int(1000 / FRAME_RATE);
- var totalUpdates:int = int(_seconds * 1000 / msPerUpdate);
- if (!_timer)
- {
- _timer = new Timer(msPerUpdate, totalUpdates);
- _timer.addEventListener(TimerEvent.TIMER, quake);
- _timer.addEventListener(TimerEvent.TIMER_COMPLETE, resetImage);
- }
- else
- {
- _displayObject.x = _originalX;
- _displayObject.y = _originalY;
- _timer.reset();
- }
- _timer.start();
- }
- /**
- * 抖动
- * @param event
- */
- private function quake( event:TimerEvent ):void
- {
- var newX:int = _originalX;
- var newY:int = _originalY;
- switch(_direction)
- {
- case LEFT_RIGHT_UP_DOWN:
- newX = _originalX + Math.random() * _intensity - _intensityOffset;
- newY = _originalY + Math.random() * _intensity - _intensityOffset;
- break;
- case LEFT_RIGHT:
- newX = _originalX + Math.random() * _intensity - _intensityOffset;
- break;
- case UP_DOWN:
- newY = _originalY + Math.random() * _intensity - _intensityOffset;
- break;
- }
- _displayObject.x = newX;
- _displayObject.y = newY;
- }
- /**
- * 重置
- * @param event
- */
- private function resetImage( event:TimerEvent = null ):void
- {
- _displayObject.x = _originalX;
- _displayObject.y = _originalY;
- cleanup();
- }
- /**
- * 清除
- */
- private function cleanup():void
- {
- _bShaking = false;
- /*_timer = null;
- _timer.stop();*/
- _timer.reset();
- if (_bDestroy)
- {
- _timer.removeEventListener(TimerEvent.TIMER, quake);
- _timer.removeEventListener(TimerEvent.TIMER_COMPLETE, resetImage);
- _timer = null;
- _displayObject = null;
- }
- delete [this];
- //_displayObject = null;
- }
- }
- }
[as3]as3实现屏幕切换震动的效果 as3屏幕
我们是一家提供综合软件外包与弱电工程服务的技术公司。
业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。
公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室