`
wojiaolongyinong
  • 浏览: 74562 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

让蒲公英飘动起来

    博客分类:
  • Java
 
阅读更多

晚上回到宿舍,突然想起,我可以把昨天晚上的代码修改一下,来让我的蒲公英达到飘动的效果,然后就把代码乱修改了一番,代码如下,但是飘动的效果得在运行的时候才能看出来,具体代码如下:

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * 画出一颗动态的蒲公英。。。。(画出蒲公英的改进版,使得蒲公英可以飘动)
 * @author LONG
 *
 */
public class TheTree extends JFrame {
	
	private static final long serialVersionUID = 1L;
	private Dimension di = null;
	private Graphics2D gr = null;
	private int x,y;		//蒲公英初始飘动的点
	private JPanel jp = null;		//将面板声明为全局变量
	private int count = 0;		//用来记录次数
	
	/**
	 * 程序主入口
	 * @param args
	 */
	public static void main(String[] args){
		TheTree tt = new TheTree();
		tt.showFrame();
	}
	
	/**
	 * 展示窗体,将窗体显示出来
	 */
	public void showFrame(){
		this.setTitle("The Tree");
		Toolkit tl = Toolkit.getDefaultToolkit();
		di = tl.getScreenSize();
		this.setSize(di.width,di.height);
		this.setDefaultCloseOperation(3);
		jp = new JPanel();
		jp.setPreferredSize(new Dimension(di.width,di.height));
		x = di.width;			//初始化坐标值,使其最大
		y = di.height;			//初始化坐标值,使其最大
		this.add(jp);
		this.setResizable(false);
		jp.setBackground(Color.BLACK);
		this.setVisible(true);
		gr = (Graphics2D) jp.getGraphics();
		
		//给界面添加监听器,判断执行次数
		jp.addMouseListener(new MouseAdapter(){
			public void mouseReleased(MouseEvent e){
				draw(e);
			}
		});	
	}
	
	/**
	 * 初始进行选择,来判断是初次绘画还是改变后
	 * @param e		传入点击事件
	 */
	public void draw(MouseEvent e){
		while(y > 0){
			if(count == 0){
				x = e.getX();	//自己选择蒲公英生长的位置
				y = e.getY();
			}else{
				y -= 5;		//非初次的话,那么进行改变位置,传入参数
				x += 6;
			}		
			init(x,y);		//执行下面的函数
		}
	}
	
	//用来初始化蒲公英的位置,达到飘动的效果
	public void init(int xx,int yy){
		BasicStroke bs = new BasicStroke(4);
		gr.setStroke(bs);
		gr.setColor(Color.GREEN);
		gr.drawLine(xx, yy, xx, yy - 400);	//用来先画出蒲公英的主干
		doSomething(xx,yy - 400,150);
	}
	
	/**
	 *那我们来画蒲公英吧
	 * 
	 * @param x1	起始点x坐标
	 * @param y1	起始点y坐标
	 * @param h		长度h
	 */
	public void doSomething(int x1, int y1, int h){
		//使循环将所有的蒲公英分支画出来
		for(int i = 0; i < 90; i++){
			double angle = i * 2 * Math.PI/90;		//得到等分的九十个角
			int x2 = x1 + (int)(Math.sin(angle) * h);
			int y2 = y1 - (int)(Math.cos(angle) * h);
			BasicStroke bs_next = new BasicStroke();
			gr.setStroke(bs_next);
			gr.setColor(Color.gray);
			gr.drawLine(x1, y1, x2, y2);
			gr.setColor(Color.WHITE);
			gr.fillOval(x2 - 1, y2 - 1, 5, 5);
		}
		try {
			Thread.sleep(120);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		//再次将蒲公英画黑,重复上面的画的动作,只不过是将所有的颜色都改为黑色的,已达到飘动的效果
		BasicStroke bs = new BasicStroke(4);
		gr.setStroke(bs);
		gr.setColor(Color.BLACK);
		gr.drawLine(x1, y1 + 400, x1, y1);	
		for(int i = 0; i < 90; i++){
			double angle = i * 2 * Math.PI/90;		
			int x2 = x1 + (int)(Math.sin(angle) * h);
			int y2 = y1 - (int)(Math.cos(angle) * h);
			BasicStroke bs_next = new BasicStroke();
			gr.setStroke(bs_next);
			gr.setColor(Color.BLACK);
			gr.drawLine(x1, y1, x2, y2);
			gr.setColor(Color.BLACK);
			gr.fillOval(x2 - 1, y2 - 1, 5, 5);
		}
		count++;
	}
}

 

 

分享到:
评论

相关推荐

    超酷炫html5页面飘落蒲公英动画特效

    此外,还可以考虑碰撞检测,当蒲公英触碰到页面底部时,让它们向上反弹,或者消失后重新生成,增加视觉效果。 以上就是利用HTML5和JavaScript实现飘落蒲公英动画的基本步骤。这个特效展示了HTML5的动态性能和...

    蒲公英花絮飘飞flash动画素材.rar

    此外,Flash的动作脚本语言AS3(ActionScript 3)还可以用来添加更复杂的交互性,例如让花瓣随风向飘动,或者根据鼠标移动而变化。 对于“短片剪辑”这一标签,我们可以理解这款素材特别适合用于电影、短片、广告...

    飞舞的蒲公英

    2. **动画循环**:通过设置定时器,JavaScript不断地更新每个蒲公英的位置和状态,让它们看起来像在不断飘落。 3. **事件处理**:如果需要,还可以添加交互元素,比如点击屏幕让蒲公英加速飘落,或者改变风向等。 ...

    蒲公英网页设计

    此外,JavaScript可能也会被用于实现更丰富的交互效果,比如鼠标悬停蒲公英种子飘动、点击触发动画等。如果涉及动态数据展示或用户交互,还可能需要用到PHP、JavaScript框架如jQuery或现代前端框架如React、Vue.js等...

    层层清晰的蒲公英背景flash效果.rar

    - **图层管理**:通过在FLA文件中创建多个图层,设计师可以分层次地组织元素,如背景、中间层和前景,使得蒲公英的飘散看起来有深度感和层次感。 - **关键帧动画**:Flash允许在时间轴上设置关键帧,然后自动生成...

    唯美蒲公英PPT背景图片下载.rar

    3. **动画效果**:PowerPoint的动画功能可以让蒲公英图片动态化,例如通过添加飘动的蒲公英种子动画,增加观众的互动体验。 4. **主题一致性**:如果整个演示文稿都采用蒲公英主题,可以考虑将这个背景应用到所有...

    飞舞的蒲公英PPT背景图片.rar

    本压缩包“飞舞的蒲公英PPT背景图片.rar”提供的是两张以蒲公英为主题,风格简约的PPT背景图片,旨在为你的演示文稿增添自然与宁静的气息,让观众在欣赏美丽的同时,更好地接收信息。 首先,我们来深入理解一下PPT...

    梦幻唯美蒲公英PPT背景图片.rar

    描述进一步揭示了这个PPT背景图片的具体内容和用途,它包括3页不同的设计,每页都有光晕效果和飘动的蒲公英图像,适合用于表达情感、记录美好回忆或阐述理想抱负的PPT制作。 1. **PPT设计基础**:PPT(PowerPoint)...

    Dandelion Optimizer 蒲公英优化器 Matlab

    在优化过程中,每个解决方案被视为一个蒲公英种子,它们在问题空间内随机飘动,寻找最佳生长条件(即最优解)。这个过程中,算法会考虑种子的飘散距离、方向以及受到的环境影响,如风力(模拟适应度函数的梯度信息)...

    9种PPT动态效果特效下载.rar

    在PPT中实现此效果,可以通过动画路径设置,让蒲公英图片沿着预设路径飘动。 2. 飘动的气球:飘动的气球效果可以为演示添加欢乐和庆祝氛围,适用于开场或结束时。利用“路径动画”和“时间延迟”功能,可以让多个...

    dandelion.zip

    开发者通过定义蒲公英的形状、颜色和运动轨迹,使它们在Canvas上飘动,创造出逼真的飘落效果。 JavaScript是实现动画的主要工具,它负责控制蒲公英粒子的生成、移动、消失等行为。动画的核心算法通常包括以下几个...

    练习素材.zip

    "飞舞的蒲公英"可能是一个动态的图像序列,例如GIF或PNG格式,展示了蒲公英在风中飘动的情景。这样的素材可能用于教学演示,帮助学生理解运动物体的绘制技巧,或者在设计中作为背景元素增加自然感。如果是视频文件,...

    花瓣飘落、星光变幻flash素材

    此外,蒲公英的飘散可能需要更细致的风力模拟,以使种子随着风的方向飘动。 最后,提到的“flash背景透明代码”是指在Flash中设置对象或舞台的透明度。通过调整Alpha值,开发者可以让背景变得半透明或完全透明,...

    部编版语文二年级上册全册单元期中期末测试卷.docx

    5. **词语辨析** - 题目要求学生区别相似的词义,如"飘动"与"漂浮",以及在不同情境下的用法,这有助于提升学生的语言运用能力。 6. **形容词搭配** - 学生需要填写合适的形容词来描述名词,如"______的脑袋"、"___...

    会声会影flash花草素材150款

    这150款素材涵盖了多种类型的花草,包括但不限于玫瑰、樱花、向日葵、薰衣草、蒲公英等,每种都有独特的动画设计,可以根据不同的场景和情感需求选择适合的元素。此外,素材的分辨率和质量都经过精心处理,确保在...

    如何快速制作flash banner.docx

    在“选择设置”中,软件提供了多种预设的Flash动画效果,如飘动的蒲公英等。挑选一个符合你设计风格的特效,可以增加Banner的动态感和吸引力。 5. **编辑文字和图像** “文字图像”选项是编辑Banner内容的核心。...

    13种烟花粒子效果帧动画.zip

    3. **漂浮物**:漂浮物粒子可能指的是像蒲公英种子那样轻盈飘动的物体。"dandelion3_.png"和"dandelion1_353x500_44.png"可能就是这类效果的代表,它们可以用于模拟风中的飘浮物,为场景增添自然和动态元素。 4. **...

Global site tag (gtag.js) - Google Analytics