抖动函数;shake()

/*
		 
		 * //obj:对象 ;attr:属性  endFn:回调函数
		 * move(obj, attr,endFn//function(){回调执行事件})
		 * 注释*1
		 * obj.onOff
		 * 防止定时器插队
		 * 当函数执行时该值将成为不可执行值
		 * 知道定时器执行完成后改变该值
		 * 
		 * 注释*2
		 * 回调函数
		 * 判断当前函数是否存在
		 * 如果存在就执行
		 * 
		 * 
		 * 注释*3
		 * 使用for循环来生成obj的抖动幅度
		 * 并保存于Arr数组中
		 * 注意需要添加[0]
		 * */

function shake(obj, attr, endfn) {
	var timer = null
	var arr = []
	var num = 0

	if(!obj.onOff) { //注释*1
		obj.onOff = true
		//
		for(var i = 20; i > 0; i--) {
			arr.push(i, -i)
		}
		arr.push(0)
		//至上一个//部分为	注释*3
		var pos = parseInt(getStyle(obj, attr))//使用getStyle()函数

		timer = setInterval(function() {
			obj.style[attr] = pos + arr[num] + "px" //执行当前函数要求
			num++ //使用 num 调取出Arr数组中的值
			if(num == arr.length) { //判断当前事件是否已经完成
				clearInterval(timer) //已经完成,清除定时器
				obj.onOff = false //注释*1
				if(endfn) { //注释*2
					endfn()
				}
			}

		}, 30)
	}
}

function getStyle(obj, attr) { //getStyle()  获取元素当前属性值
	return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj)[attr]
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Java窗口抖动,可以使用Java的AWT和Swing库中的特定方法。以下是一个简单的示例程序,可以让窗口在屏幕上抖动: ```java import java.awt.*; import javax.swing.*; public class WindowShaker { public static void shake(Window window) { final int SHAKE_DISTANCE = 5; //抖动的距离 final int SHAKE_DURATION = 1000; //抖动的持续时间 final Point startPosition = window.getLocationOnScreen(); //窗口的起始位置 final long startTime = System.currentTimeMillis(); //抖动开始时间 Timer shakeTimer = new Timer(25, event -> { long elapsed = System.currentTimeMillis() - startTime; double waveOffset = (elapsed / (double) SHAKE_DURATION) * Math.PI; int yOffset = (int) (Math.sin(waveOffset) * SHAKE_DISTANCE); window.setLocation(startPosition.x, startPosition.y + yOffset); if (elapsed >= SHAKE_DURATION) { ((Timer) event.getSource()).stop(); window.setLocation(startPosition); } }); shakeTimer.start(); } public static void main(String[] args) { JFrame frame = new JFrame("Window Shaker"); frame.setSize(300, 200); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton shakeButton = new JButton("Shake!"); shakeButton.addActionListener(event -> shake(frame)); frame.add(shakeButton, BorderLayout.CENTER); frame.setVisible(true); } } ``` 在上面的示例程序中,我们使用了Java的Timer类来定期更新窗口的位置,使之抖动。在抖动的过程中,我们使用了正弦函数来计算窗口的偏移量,以产生平滑的抖动效果。当抖动完成后,我们将窗口的位置还原到起始位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值