AS3.0做连线题
     博主最近在做一个数学题的项目,根据要求做一些简单的动画或者藏蓄实现其功能。第一次接触项目,感觉很兴奋,正好可以练练手。其中,有一个连线的题目,之前一直没有遇到过,感觉蛮复杂的,现在分享一下如何实现的吧。
     实现的功能:点击选项---出现红线且跟随鼠标移动---只有到正确答案面前才能落下,且有正确铃声。若是错误答案不落下且有错误铃声---有重新连线和正确答案功能
     代码如下:
import flash.media.Sound;var i:int;
var p1 = new Point;//记录划线开始点
var p2 = new Point;//记录划线结束点
var cricleEnd:Shape = new Shape;//用于画点
var c_size:int = 3;//点的半径
var stopLine:Shape = new Shape;//用于跟随画线
var newLine:Shape = new Shape;//用于直接画线
var last_qus: int;//用于判断答案是否正确
var sound: Sound;//用于播放音效start_btn.addEventListener(MouseEvent.CLICK, start_line);//开始连线
replay_btn.addEventListener(MouseEvent.CLICK, replay_line);//重新连线
ans_btn.addEventListener(MouseEvent.CLICK, show_ans);//重新连线
function start_line(e)
{replay_line(Event)//清除连线//点击问题for (i=1; i<=4; i++){this["mc" + i].buttonMode = true;this["mc" + i].addEventListener(MouseEvent.CLICK, draw_point);}//点击答案for (i=1; i<=4; i++){this["ans" + i].buttonMode = true;this["ans" + i].addEventListener(MouseEvent.CLICK, stop_line);}
}//画点
function draw_point(e)
{last_qus = e.currentTarget.name.charAt(e.currentTarget.name.length - 1);p1.x = e.currentTarget.x;p1.y = e.currentTarget.y;var c_size:int = 3;cricleEnd.graphics.beginFill(0xFF3300,1);cricleEnd.graphics.drawCircle(p1.x, p1.y, c_size);cricleEnd.graphics.endFill();this.addChild(cricleEnd);//点击完之后移除点击事件和手型this["mc" + last_qus].buttonMode = false;this["mc" + last_qus].removeEventListener(MouseEvent.CLICK, draw_point);//加上鼠标跟随的监听stage.addEventListener(MouseEvent.MOUSE_MOVE,draw_line);
}
function draw_line(e)
{stopLine.graphics.clear();stopLine.graphics.lineStyle(3,0xFF3300,1);stopLine.graphics.moveTo(p1.x, p1.y);stopLine.graphics.lineTo(mouseX,mouseY);this.addChild(stopLine);
}function stop_line(e)
{var a: int= e.currentTarget.name.charAt(e.currentTarget.name.length - 1);if ( last_qus !=  a)//选择错误{sound = new wrong_sound();sound.play();}else{//选择正确sound = new right_sound();sound.play();stage.removeEventListener(MouseEvent.MOUSE_MOVE,draw_line);p2.x = e.currentTarget.x-10;p2.y = e.currentTarget.y;cricleEnd.graphics.beginFill(0xFF3300,1);cricleEnd.graphics.drawCircle(p2.x, p2.y, c_size);cricleEnd.graphics.endFill();this.addChild(cricleEnd);//划线stopLine.graphics.clear();newLine.graphics.lineStyle(3,0xFF3300,1);//颜色和粗细newLine.graphics.moveTo(p1.x, p1.y);//起点newLine.graphics.lineTo(p2.x, p2.y);//终点this.addChild(newLine);//显示//移除事件this["ans" + a].buttonMode = false;this["ans" + a].removeEventListener(MouseEvent.CLICK, stop_line);}
}

大多采用鼠标侦听事件,重新连线和正确答案的代码如下:

//清除连线
function replay_line(e)
{newLine.graphics.clear();//清除线cricleEnd.graphics.clear();//清除点
}//显示答案
function show_ans(e)
{replay_line(Event);//画点cricleEnd.graphics.beginFill(0xFC0000,1);cricleEnd.graphics.drawCircle(mc1.x, mc1.y, c_size);cricleEnd.graphics.drawCircle(mc2.x, mc2.y, c_size);cricleEnd.graphics.drawCircle(mc3.x, mc3.y, c_size);cricleEnd.graphics.drawCircle(mc4.x, mc4.y, c_size);cricleEnd.graphics.drawCircle(ans1.x-10, ans1.y, c_size);cricleEnd.graphics.drawCircle(ans2.x-10, ans2.y, c_size);cricleEnd.graphics.drawCircle(ans3.x-10, ans3.y, c_size);cricleEnd.graphics.drawCircle(ans4.x-10, ans4.y, c_size);cricleEnd.graphics.endFill();this.addChild(cricleEnd);//划线newLine.graphics.lineStyle(3,0xFC0000,1);newLine.graphics.moveTo(mc1.x, mc1.y);newLine.graphics.lineTo(ans1.x-10, ans1.y);newLine.graphics.moveTo(mc2.x, mc2.y);newLine.graphics.lineTo(ans2.x-10, ans2.y);newLine.graphics.moveTo(mc3.x, mc3.y);newLine.graphics.lineTo(ans3.x-10, ans3.y);newLine.graphics.moveTo(mc4.x, mc4.y);newLine.graphics.lineTo(ans4.x-10, ans4.y);this.addChild(newLine);
}

希望该博客能对你有所帮助,也可以留言提问。。。

     
     

用flashAS3.0做一个连线题相关推荐

  1. 从0做一个简单的信息录入系统(一、本地安装jdk)

    安装jdk 1.JDK下载官网地址 https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-download ...

  2. [ 逻辑锻炼] 用 JavaScript 做一个小游戏 ——2048 (详解版)

    前言 这次使用了 vue 来编写 2048,主要目的是温习一下 vue. 但是好像没有用到太多 vue 的东西,==! 估计可能习惯了不用框架吧 之前由于时间关系没有对实现过程详细讲解,本次会详细讲解 ...

  3. 2048小游戏html制作,[ 逻辑锻炼] 用 JavaScript 做一个小游戏 ——2048 (详解版)

    前言 这次使用了 vue 来编写 2048,主要目的是温习一下 vue. 但是好像没有用到太多 vue 的东西,==! 估计可能习惯了不用框架吧 之前由于时间关系没有对实现过程详细讲解,本次会详细讲解 ...

  4. 用flash做连线题(线的一端跟随鼠标)

    帮同事做课件,其中要做个连线测试题,需要实现用户可以用鼠标从一个点拉出一根线来的效果,实际上是线 的一端跟随鼠标,改变线的长度和倾斜角度.这和一般的图象或文字跟随鼠标有点区别.因为把高中的三角函数忘光 ...

  5. 做一个更好的A牌 从《Artifact》2.0看Valve的设计思路

    当然,笔者老倒霉蛋了,并没有收到测试资格,故本文的所有内容都来自笔者本人的"云分析",权当是个智力游戏,图一乐. 首先快速阅览一下2.0的主要变化: 改动速览 从这些改动中,我们首 ...

  6. jsplumb拖线_jsPlumb插件做一个模仿viso的可拖拉流程图

    前言 这是我第一次写博客,心情还是有点小小的激动!这次主要分享的是用jsPlumb,做一个可以给用户自定义拖拉的流程图,并且可以序列化保存在服务器端. 我在这次的实现上面做得比较粗糙,还有分享我在做j ...

  7. 0基础用android做一个excel表查询器(2):编写程序

    0基础用android做一个Excel表查询器(2):编写程序 编完页面下面就该开始写程序了,首先确定一下思路,很简单,将Excel表写入一个List(或数组)里,然后获取Plain Text中写入的 ...

  8. HDU2500 做一个正气的杭电人【水题】

    做一个正气的杭电人 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  9. php 做一个题目木选项,这才是题库!《一站到底》升级题库8000道,站神邀你来挑战!...

    答爆题库 "厦大版何以琛" 邱汐岩 一站到底五周年巅峰会站神之神 南大校草蒲熠星 从历史.常识.诗词.建筑.地理.运动.数学.著作到饮食.服饰.方言.风俗.发明.文物.器物等.可以 ...

  10. 肝了两周,我做了一个面试刷题小程序

    大家好,我是poetry.过年放假那段时间没有回去过年,终于有了自己一整块时间做点自己喜欢的事情,大概花了两周时间开发完一个面试刷题小程序的全部功能,今天终于将它上线跟大家见面了. 市面上很多刷题小程 ...

最新文章

  1. 关于androidManifest.xml的概叙以及intent-filter的详细分析
  2. C++中#if,#ifdef,ifndef
  3. 上传EXCEL到ABAP内表
  4. ubuntu下进程kidle_inject致使编译软件很慢
  5. EPS(Evolved Packet System,演进的分组系统)
  6. Linq动态查询与模糊查询
  7. Oracle 自带sqldeveloper导入数据到表
  8. C++ 用遗传算法解决TSP问题,旅行商问题
  9. 比特币白皮书 Bitcoin: A Peer-to-Peer Electronic Cash System
  10. Jabber服务器部署
  11. 如何在线修改图片分辨率?怎么调整300dpi分辨率?
  12. [学习]17 每天只睡6小时,依然精力充沛
  13. dns服务器修改失败,dns错误重新设置方法
  14. 如何解密Token?
  15. Unity3D 手机摇一摇 实现震动效果
  16. Java 上机----实训操作14----学校录取类
  17. 风靡IT圈的史诗级漏洞log4j2的产生原理及复现
  18. proteus软件闪退与许可证到期问题解决办法
  19. GZH逸佳君:还在担心乱用字体会侵权吗?免费送你1800款可免费商用的精选字体
  20. css-属性、样式调节

热门文章

  1. [暗黑破坏神2]PLUGY与HACKMAP共存
  2. mac版本idea反编译jar包
  3. 安卓天天练练(五)CompoundButton
  4. %3c大自然的语言%3e竺可桢题目,大自然的语言竺可桢阅读答案
  5. windows 安装 dnw、fastboot 驱动的时候遇到问题(数字签名)
  6. 快播创始人王欣成立人工智能公司
  7. windows下,本地硬盘搜索工具everything。适合windows下搜索文件名。
  8. 【JS】顶部悬浮及缓慢回到顶部
  9. 超标量处理器设计 姚永斌 第6章 指令解码 摘录
  10. Jenkins的定时构建与轮询SCM