📄 jellypanel.as
字号:
/*
projects : 果冻弹出窗口
author : sban http://blog.sban.com.cn/
date : 2008/4/1
more..
flex5 Team http://groups.google.com/group/flex5/
flex5 Code http://code.google.com/p/flex5/
flex5 demo http://flex5.cn/
sban blog http://blog.sban.com.cn/
.net blog http://sban.cnblogs.com/
About Me
sban is a software architect base on .net & flash/flex, who living in Beijing, China now.
MSN
sban#live.cn
*/
package sban.controls{
import com.adobe.ac.mxeffects.Distortion;
import com.adobe.ac.mxeffects.DistortionConstants;
import flash.events.TimerEvent;
import flash.geom.Point;
import flash.utils.Timer;
import mx.containers.Panel;
public class JellyPanel extends Panel {
private const InitPoint:Point = new Point(100,100);
private var distortion: Distortion;
private var currentPoint : Number = 0;
private var pointsSpecimen:Array;
private var pointsArray : Array;
private var distortionTimeer : Timer;
//窗口振动次数
public var vibrationCount : Number = 30;
//振动间隔
public var delayNumber : Number = 18;
private var dyncDelayNumber : Number = delayNumber;
public function JellyPanel() {
//TODO: implement function
super();
distortionTimeer = new Timer(delayNumber, vibrationCount);
distortionTimeer.addEventListener(TimerEvent.TIMER, timerHandler);
//欠组尼曲线采样点集合
pointsSpecimen = [
50,55.251048395021485,67.86320984930961,83.2024901610665,97.44865698524941,
108.11123531529728,114.13278592010593,115.6794726556897,113.7514225333381,
109.74227285271256,105.04958100112648,100.79808814176877,97.69749345012417,
96.023554262826,95.69027018664536,96.37235141377161,97.63915519115437,
99.07033390929932,100.33572339218681,101.2341473366892,101.69546822829375,
101.75619974227371,101.52120076364723,101.12306421982154,100.68788141853504,
100.312273569012,100.05293362397794,99.9270920221492,99.92062845073377,100
];
}
private function timerHandler(evt : TimerEvent) : void {
currentPoint++;
dyncDelayNumber = dyncDelayNumber + 0.5;
var leftTopPoint : Point = new Point(pointsArray[0][currentPoint], pointsArray[0][currentPoint]);
var rightTopPoint : Point = new Point(pointsArray[1][currentPoint], pointsArray[1][currentPoint]);
var rightBottomPoint : Point = new Point(pointsArray[2][currentPoint], pointsArray[2][currentPoint]);
var leftBottomPoint : Point = new Point(pointsArray[3][currentPoint], pointsArray[3][currentPoint]);
distortion.renderCorners(leftTopPoint, rightTopPoint, rightBottomPoint, leftBottomPoint);
if (currentPoint >= vibrationCount) {
reset();
}
}
private function reset():void {
if (distortion != null) {
distortion.destroy();
distortion = null;
}
dyncDelayNumber = delayNumber;
distortionTimeer.repeatCount = vibrationCount;
currentPoint = 0;
distortionTimeer.reset();
}
private function generatePointsArray(): void {
var tempPointsArr:Array = new Array(4);
var n1:Number;
var n2:Number;
var n3:Number;
var n4:Number;
pointsArray = new Array();
var pointNum : Number = pointNum = 0;
while (pointNum++ < 5) {
tempPointsArr = [];
n1 = Math.random() * 0.70 + 0.80;
n2 = 0;
while (n2++ <= vibrationCount) {
n4 = Math.round(n2 * n1);
if (n4 <= vibrationCount - 4) {
tempPointsArr.push(pointsSpecimen[n4]);
continue;
}
tempPointsArr.push(100);
}
pointsArray.push(tempPointsArr);
}
}
public function show():void {
if (distortion != null) {
return;
}
distortion = new Distortion(this);
distortion.buildMode = DistortionConstants.POPUP;
distortion.smooth = true;
generatePointsArray();
distortionTimeer.repeatCount = vibrationCount;
distortionTimeer.start();
}
public function hide():void {
visible = false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -