`
wojiaolongyinong
  • 浏览: 74755 次
  • 性别: 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源码-短片剪辑”结合起来看时,可以明显地发现,它特别适合用于那些需要具有优雅视觉效果的项目,比如电影开场的浪漫镜头、短片中传递诗意氛围的过渡、广告中的创意视觉效果、或是...

    飞舞的蒲公英

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

    蒲公英网页设计

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

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

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

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

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

    二年级语文上册《蒲公英的种子》教案 语文A版 教案.doc

    在课文学习的后半部分,教师应进一步引导学生了解蒲公英种子在风中的飘动,以及它们最终的归宿。教师还可以通过提问,让学生思考如果自己是一颗蒲公英的种子会怎样,激发学生的想象力和创造力。 为了巩固学习成果,...

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

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

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

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

    蓝天白云蒲公英PPT背景图片下载.rar

    蓝天白云蒲公英,这几个词汇连在一起,总是能让人联想到一个清新宁静的场景,仿佛置身于大自然的怀抱中,呼吸着新鲜的空气,感受着季节的变换。这样的场景,不仅在现实生活中为人们所喜爱,在数字世界中,以蓝天白云...

    Dandelion Optimizer 蒲公英优化器 Matlab

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

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

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

    dandelion.zip

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

    3植物妈妈有办法 (6).ppt

    我们可以想象,当蒲公英的种子随着风儿飘动时,它们可能穿越森林,飞越山川,越过河流,最终在一块肥沃的土地上停留下来,开始了新的生命旅程。蒲公英的这种传播方式,既简单又高效,是对风力利用的极致表现,更是...

    3、植物妈妈有办法课件.ppt

    孩子们通过观看蒲公英种子随风飘动的动画,仿佛能感受到那一颗颗“娃娃”对新世界的渴望。而这种风力传播的方式,更是植物依赖环境条件进行繁殖的典型代表。 随后,我们走进了苍耳的世界。在这里,孩子们看到了苍耳...

    练习素材.zip

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

    幼儿园中班主题优秀教案《种子的旅行》含反思.docx

    例如,风力传播的概念,通过观察蒲公英轻柔的伞状种子随风飘动的景象,孩子们能够直观地感受到自然界中这一常见且神奇的现象。而当教师引导孩子们观察苍耳的种子是如何借助动物完成旅行的时候,孩子们的想象和好奇心...

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

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

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

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

    会声会影flash花草素材150款

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

Global site tag (gtag.js) - Google Analytics