【JavaScript】撞墙的小球
参考:
1、JS 元素位置 设置元素位置:http://blog.sina.com.cn/s/blog_a2ec891e01011v9f.html
3、使用JavaScript动态更改CSS样式:http://www.jianshu.com/p/0260cddff86a、http://kimi.it/289.html、http://www.jb51.net/article/65625.htm
效果图:
思路:
1、绘制的静态小球。
2、定义小球的四种飞行状态。
3、初始化小球状态,定义切换状态的条件。
代码:
1、初步实现。。。缺点是无法根据屏幕大小调整“墙”的位置。。还需要小改一下。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Dynamic Ball</title>
<style>
html {
background: #F2F2F2;
} p {
text-align: center;
} .ball {
width: 100px;
height: 100px; background: black;
border-radius: 50%; position: absolute;
left: 100px;
top: 300px;
}
</style>
</head>
<body>
<p>Dynamic Ball</p>
<div class="ball"></div>
<script>
function setPosition(x , y) {
target.style.left = x + "px";
target.style.top = y + "px";
}
var target = document.querySelector('.ball');
// 定义一对变量来管理target的位置
var X = Math.random()*1024;
var Y = Math.random()*768;
// 定义一个变量管理target的飞行状态
var STATE = 1;
function f1() {
X++;
Y++;
STATE = 1;
setPosition(X, Y);
}
function f2() {
X--;
Y++;
STATE = 2;
setPosition(X, Y);
}
function f3() {
X++;
Y--;
STATE = 3;
setPosition(X, Y);
}
function f4() {
X--;
Y--;
STATE = 4;
setPosition(X, Y);
}
function checkDirection() {
if (X > 1024 && STATE == 1) STATE = 2;
if (X > 1024 && STATE == 3) STATE = 4;
if (X < 0 && STATE == 4) STATE = 3;
if (X < 0 && STATE == 2) STATE = 1;
if (Y > 768 && STATE == 1) STATE = 3;
if (Y > 768 && STATE == 2) STATE = 4;
if (Y < 0 && STATE == 4) STATE = 2;
if (Y < 0 && STATE == 3) STATE = 1;
if (STATE == 1) f1();
if (STATE == 2) f2();
if (STATE == 3) f3();
if (STATE == 4) f4();
}
function start() {
setInterval("checkDirection()", 10);
}
setPosition(X, Y);
start();
// target.f1 target.f2 target.f3 target.f4
// target.setPosition(randomX, randomY);
// target.start();
</script>
</body>
</html>
2、改。参考:http://www.cnblogs.com/Henllyee/archive/2008/04/20/1162517.html
<script>
var screenWidth = document.documentElement.clientWidth;
var screenHeight = document.documentElement.clientHeight;
function setPosition(x , y) {
target.style.left = x + "px";
target.style.top = y + "px";
}
var target = document.querySelector('.ball');
// 定义一对变量来管理target的位置
var X = Math.random()*screenWidth;
var Y = Math.random()*screenHeight;
// 定义一个变量管理target的飞行状态
var STATE = 1;
function f1() {
X++;
Y++;
STATE = 1;
setPosition(X, Y);
}
function f2() {
X--;
Y++;
STATE = 2;
setPosition(X, Y);
}
function f3() {
X++;
Y--;
STATE = 3;
setPosition(X, Y);
}
function f4() {
X--;
Y--;
STATE = 4;
setPosition(X, Y);
}
function checkDirection() {
screenWidth = document.documentElement.clientWidth;
screenHeight = document.documentElement.clientHeight;
if (X > screenWidth && STATE == 1) STATE = 2;
if (X > screenWidth && STATE == 3) STATE = 4;
if (X < 0 && STATE == 4) STATE = 3;
if (X < 0 && STATE == 2) STATE = 1;
if (Y > screenHeight && STATE == 1) STATE = 3;
if (Y > screenHeight && STATE == 2) STATE = 4;
if (Y < 0 && STATE == 4) STATE = 2;
if (Y < 0 && STATE == 3) STATE = 1;
if (STATE == 1) f1();
if (STATE == 2) f2();
if (STATE == 3) f3();
if (STATE == 4) f4();
}
function start() {
setInterval("checkDirection()", 10);
}
setPosition(X, Y);
start();
// target.f1 target.f2 target.f3 target.f4
// target.setPosition(randomX, randomY);
// target.start();
</script>
【JavaScript】撞墙的小球的更多相关文章
- 《转载》三年建站之路走得一事无成 今来A5撞墙反思
本文转载自A5站的蚕丝被.如果给站长带来不便之处,请联系博主. 时间过得真快,记得上一次在A5写文章已经是一年前的事了,这其中是有原因的,今天就跟大家来聊聊三年来个人失败经历的撞墙反思,也给一些有着同 ...
- [TimusACM][1258]程序员撞墙的问题
(本文是从我的旧博客迁移过来的) 问题地址:http://acm.timus.ru/problem.aspx?space=1&num=1258 前几日在博客园看到这种在线测试的时候,有一种相见 ...
- 面向对象原生JavaScript案例炫彩小球
面向对象其实对于初学者来说还是比较难以理解的,以前看到一个面试题目 面向对象是什么? 面向对象是一种思想,千万别入坑了: 这次给大家带来的是一个鼠标移动产生小球的案例,不是我不想给大家分享如何去认识面 ...
- 【JavaScript】动态的小球
参考: 1.CSS 对比 JavaScript 动画 2.CSS制作水平垂直居中对齐_水平居中, 垂直居中 教程_w3cplus:https://www.w3cplus.com/css/vertica ...
- 【JavaScript】键盘控制小球
参考: 1.Simple Canvas Game 2.javaScript 事件监听 <!DOCTYPE html> <html> <head> <meta ...
- JS实现动画方向切换效果(包括:撞墙反弹,暂停继续左右运动等)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- tyflow车撞墙测试
- 使用Javascript来编写贪食蛇(零基础)
引用的东西都很基础,注释也很多,这里就不多说了. <head> <meta http-equiv="Content-Type" content="t ...
- JavaScript与html5写的贪吃蛇完整代码
JavaScript与html5写的贪吃蛇完整代码 查看运行效果可访问http://www.codesocang.com/texiao/youxitexiao/2014/0402/7045.html# ...
随机推荐
- chrome vim设置
chrome vi 插件:Vrome 配置文件如下 set hintkeys=asdfghjkl;" 把默认使用数字来完成提示改为使用键盘上的这几个键map j 10jmap k 10k&q ...
- git & github 菜鸟笔记
1.概念: 最先进的分布式版本控制系统 文件修改该提交的内容:---版本 文件名 用户 说明 日期 GitHub网站上线了,它为开源项目免费提供Git存储 --CVS及SVN都是集中式的版本控制系统, ...
- Django admin 的 9 个技巧
Tip 1:Django admin 后台不限于用 Django 开发的网站 虽然 Django admin 管理界面可以非常友好的用在 Django 项目的其它部分,它同样可以很容易用于其它像传统的 ...
- pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- 面试之Java持久层(十)
91,什么是ORM? 对象关系映射(Object-Relational Mapping,简称ORM)是一种为了解决程序的面向对象模型与数据库的关系模型互不匹配问题的技术: 简单的说,O ...
- git 拉取远程分支到本地并建立关联关系
git拉取远程分支到本地 一.查看远程分支 使用如下git命令查看所有远程分支: git branch -r 二.拉取远程分支并创建本地分支 方法一 使用如下命令: git checkout ...
- 【BZOJ1570】[JSOI2008]Blue Mary的旅行 动态加边网络流
[BZOJ1570][JSOI2008]Blue Mary的旅行 Description 在一段时间之后,网络公司终于有了一定的知名度,也开始收到一些订单,其中最大的一宗来自B市.Blue Mary决 ...
- VMware虚拟机NAT(地址转换模式)
转载于:https://www.linuxidc.com/Linux/2016-09/135521p2.htm 二.NAT(地址转换模式) 刚刚我们说到,如果你的网络ip资源紧缺,但是你又希望你的 ...
- net.mvc中并发限制
浏览器限制 会话限制 线程限制 这篇文章讲的很详细: https://weblogs.asp.net/imranbaloch/concurrent-requests-in-asp-net-mvc 明白 ...
- 手动爬虫之流程笔记1(python3)
一.引入拓展库 由于刚刚起步学习爬虫,故从urllib库开始 首先引入urllib,这里主要用到urllib中request类 import urllib.request as ur 二.设置全局参数 ...