Java实现多种幻灯片切换特效(附源码)

Java实现多种幻灯片切换特效(附源码),第1张

功能说明 代码实现了多种幻灯片变换特效 如 淡入淡出 缓慢覆盖 旋转覆盖等 多种变换效果

功能实现

图片加载类ImageLoader实现

)用阻塞队列存储要图片 BlockingQueue images = new ArrayBlockingQueue<>( )

)用图片eof表示图片队列结束 Image eof = new WritableImage( )

)循环读取指定图片 由于是阻塞队列 所以当队列满的时候线程会自动阻塞

public void run() {

int id =

try {

while (true) {

String path = resources[id]

InputStream is = getClass() getResourceAsStream(path)

if (is != null) {

Image image = new Image(is width height true true)

if (!image isError()) {

images put(image)

}

}

id++

if (id >= resources length) {

id =

}

}

} catch (Exception e) {

} finally {

if (!cancelled) {

try {

images put(eof)

} catch (InterruptedException e) {

}

}

}

}

特效实现 以弧形切换图片为例 首先定义LengthTransition变化特效 设置变化时间 以及弧度数跟时间的变化关系

class LengthTransition extends Transition {

Arc arc

public LengthTransition(如碰孙Duration d Arc arc) {

this arc = arc

setCycleDuration(d)

}

@Override

protected void interpolate(double d) {

arc setLength(d * )

}

}

然后设置图片层叠效果

group setBlendMode(BlendMode SRC_OVER)

next setBlendMode(BlendMode SRC_ATOP)

以及之前那张图片的吵隐淡出特效

FadeTransition ft = new FadeTransition(Duration seconds( ) mask )

最后同时执行这两个特效渣链

ParallelTransition pt = new ParallelTransition(lt ft)

效果图

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JPanel

public class Test{

private JFrame frame

private String scrolledText

private String str ="滚动文字 Demo"

public static void main(String args[]) {

try{

Test window = new Test()

window.frame.setVisible(true)

}

catch(Exception e){

e.printStackTrace()

}

}

public Test(){

initialize()

}

private void initialize(){

frame.setBounds(100, 100, 500, 375)

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

final JPanel panel = new JPanel()

panel.setBackground(Color.WHITE)

panel.setLayout(new BorderLayout())

frame.getContentPane().add(panel, BorderLayout.NORTH)

final JLabel label = new JLabel()

label.setText("New JLabel")

panel.add(label)

label_scrolledText(label)

frame.addComponentListener(

new ComponentAdapter(){

public void componentResized(ComponentEvent arg0){

label_scrolledText(label)

}

})

}

public void label_scrolledText(JLabel label) {

this.scrolledText = this.str

label.setText(scrolledText)

FontMetrics metrics = label.getFontMetrics(label.getFont())

int textW = metrics.stringWidth(label.getText())

Dimension frameSize = frame.getSize()

for (int i = 1i <= (frameSize.width - textW) / 3 - 3i++)

scrolledText += " "

label.setText(scrolledText)

Thread thread = new Thread(new TextChanger(label))

thread.start()

}

}

java.lang.NullPointerException

at Test.initialize(Test.java:26)

at Test.<init>(Test.java:23)

at Test.main(Test.java:16)

一个脚本 QQ空间不支持

你找个FLASH带JAVA脚本的 然掘闭物后找出正确地址.

然后在QQ空间的自判液定义 添加模块 FLASH模块里

把地址复制上点确定 再托大到合适角度 一样有这样的效果

QQ空间代态桥码的网站都有 百度一找一堆!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12383104.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存