当前位置: 首页 > news >正文

HTML5拖拽二 植物大战僵尸V0.1版本

为研究HTML5中的拖拽事件,以下是V0.1的植物大战僵尸的HTML5代码,功能还没有完善,利用了HTML5的拖拽。



<html >
<head>
<title>植物大战僵尸V0.1</title>


<style type="text/css">
.wapon{
width:50px;
height:50px;
border:1px solid #666666
}
.pg{
width:1000px;
height:500px;
border:2px solid #a2a2a2
}
</style>
</head>


<body>


<!--
物品栏
-->
<table >
<tr>
<td ><img id="img30" src="res/30.png" class="wapon" draggable="true" /></td>
<td ><img id="img35" src="res/35.png" class="wapon" draggable="true" /></td>
</tr>
</table>


<!--
游戏区域
-->
<div id="playground" class="pg">


</div>



<script type="text/javascript">


function AttachStartDragEvent(imgId){


var obj = document.getElementById(imgId);
obj.addEventListener('dragstart', function(e) {
  e.dataTransfer.setData('text/plain', obj.src);
},false);
}




function AttachEndDragEvent(imgId){
var oDropBox = document.getElementById('playground'),
  tmpData;


oDropBox .addEventListener('drop', function(e) {
  tmpData = e.dataTransfer.getData('text/plain');

var img = document.createElement("img");


img.src = tmpData;
img.style.width = 50;
img.style.height = 50;
img.style.position = "absolute";
img.style.left = e.clientX;
img.style.top = e.clientY;


oDropBox.appendChild(img);
},false);
}


function AttachDragOverEvent(objId){
var oDropBox = document.getElementById(objId);
oDropBox.addEventListener('dragover', function(e) {
  e.stopPropagation();
     e.preventDefault();
},false);
}




游戏区域注册drag over
AttachDragOverEvent("playground");


为物品栏注册拖拽事件


豌豆
AttachStartDragEvent("img30");
AttachEndDragEvent("img30");


太阳
AttachStartDragEvent("img35");
AttachEndDragEvent("img35");




</script>



</body>
</html>


截图:



相关文章:

  • C# 中where类型约束
  • oracle函数之:translate
  • json 序列化与反序列化类
  • 关于RenderTarget的注意事项
  • HTTP listener 的封装---HttpListenerEx
  • C#把外部文件拖入PictureBox中
  • C# 中 字符串和byte数组的转换
  • 《重构——改善既有代码的设计》
  • 二分查找法 C#实现
  • 清华申请退学博士作品:完全用Linux工作
  • C# 压缩和解压缩(Gzip和Zip的方式)
  • Jsp联接Access数据库文件的方法
  • 中国教育“绞肉机”
  • 在指定范围内 生成随机序列算法(可用于洗牌算法)
  • 不用‘/’ 实现除法运算
  • [译] React v16.8: 含有Hooks的版本
  • 「译」Node.js Streams 基础
  • Brief introduction of how to 'Call, Apply and Bind'
  • CSS居中完全指南——构建CSS居中决策树
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Javascript弹出层-初探
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Vue实战(四)登录/注册页的实现
  • 闭包,sync使用细节
  • 服务器从安装到部署全过程(二)
  • 汉诺塔算法
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 想写好前端,先练好内功
  • 学习笔记:对象,原型和继承(1)
  • 一道面试题引发的“血案”
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​香农与信息论三大定律
  • # include “ “ 和 # include < >两者的区别
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • (39)STM32——FLASH闪存
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (zt)最盛行的警世狂言(爆笑)
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (七)Knockout 创建自定义绑定
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)平衡树
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .Net - 类的介绍
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • @RestControllerAdvice异常统一处理类失效原因