(转载)http://www.jb51.net/article/13139.htm

首先声明:本人大菜鸟一个,刚接触AS3不久,许多理念还没来得及灌输,这些case都是从网上down的,但因为解说是英文的,不利我们学习,我就充当一个translater,顺便可以让自己巩固一下知识。 水平有限,错误难免,欢迎大虾小虾,大鸟小鸟指正。

下面进入正题:

案例1:熟悉新的事件机制和addChild的运用

说明:拖动小人到滑板上,然后拖动滑板,可以发现小人已经跟滑板粘在了一起。 
演示:http://www.live-my-life-with-yuyi.com/as3_cases/changing_parents/

代码:

复制代码代码如下:
boarder_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag);  
boarder_mc.addEventListener(MouseEvent.MOUSE_UP, drop);  
red_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag);  
red_mc.addEventListener(MouseEvent.MOUSE_UP, drop);  
blue_mc.addEventListener(MouseEvent.MOUSE_DOWN, drag);  
blue_mc.addEventListener(MouseEvent.MOUSE_UP, drop); 

AS3采用了新的监听机制,而且注意到对每个mc的鼠标按下弹起都使用了相同的函数,这就需要在函数里判断事件的发生者,从而做出相应的处理。

复制代码代码如下:
function drag(event:MouseEvent):void  
{  
    if(event.target.name == "boarder_mc")  
    {  
        addChild(boarder_mc);  
        event.target.startDrag(true);  
        boarder_mc.x = mouseX;  
        boarder_mc.y = mouseY;  
    }  
    else  
    {  
    event.target.startDrag();  
    }  

通过event.target.name来取得事件发生的对象名,AS3里没有了root,addChild相当于把某个mc搬到了舞台上,其实是TimeLine0.addChild(mc),同时保证该mc是在舞台的最顶层(AS3里没有了深度管理)。 
通过event.target来获取事件发生的对象

接着来看drop函数

复制代码代码如下:
function drop(event:MouseEvent):void  
{  
    event.target.stopDrag();  
    if(boarder_mc.hitTestObject(red_mc))  
    {  
        red_mc.addChild(boarder_mc);  
        boarder_mc.x = 0;  
        boarder_mc.y = 0;  
    }  
    else if(boarder_mc.hitTestObject(blue_mc))  
    {  
        blue_mc.addChild(boarder_mc);  
        boarder_mc.x = 0;  
        boarder_mc.y = 0;  
    }  

当鼠标弹起时,啥也不管,先停止拖动,如果小人和滑板有重合区域,则将小人放到滑板里,滑板就像一个container,boarder_mc成了red_mc的child,将boarder_mc的x坐标和y坐标清零是为了将小人放到滑板的正确位置。

如果小人已经成为了滑板的child,那么再次拖动滑板时,由于又执行了一次addChild(boarder_mc);所以滑板的父类又变成了舞台。

整个案例1的分析到此结束,涉及的知识点不多,主要是熟悉一下AS3的语法。

(转载)AS3.0实例学习 熟悉新的事件机制和addChild的运用的更多相关文章

  1. Cocos2d-X3.0 刨根问底(七)----- 事件机制Event源码分析

    这一章,我们来分析Cocos2d-x 事件机制相关的源码, 根据Cocos2d-x的工程目录,我们可以找到所有关于事件的源码都存在放在下图所示的目录中. 从这个event_dispatcher目录中的 ...

  2. U3D C# 实现AS3事件机制

    写了很多年的AS3,最近接触U3D感觉事件机制没AS3的爽.咬紧牙关一鼓作气 基于C# 的委托实现了一版.废话不多说上干货. EventDispatcher代码如下: using UnityEngin ...

  3. as3.0中如何阻止事件冒泡

    原作者:菩提树下的杨过转载出处:http://yjmyzz.cnblogs.com 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究 ...

  4. c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结【转载】

    引用:http://blog.csdn.net/attilax/article/details/42014327 c# .net 3.5 4.0 各个版本新特性战略规划总结 1. ---------- ...

  5. 转载——C# 6.0可能的新特性及C#发展历程

    据扯,C# 6.0在不远的将来就发布了,对应的IDE可能是VS 2014(.Net Framework 5.0),因为VS 2013已于2013年10月份发布了,对应的是.Net Franework ...

  6. 转载:Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式

    Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式 出自:http://www.cnblogs.com/top5/archive/2012/08/04/2623464.html 关 ...

  7. (转载)详解7.0带来的新工具类:DiffUtil

    [Android]详解7.0带来的新工具类:DiffUtil 标签: diffutil 2017-04-17 18:21 226人阅读 评论(0) 收藏 举报  分类: Android学习笔记(94) ...

  8. “AS3.0高级动画编程”学习:第二章转向行为(上)

    因为这一章的内容基本上都是涉及向量的,先来一个2D向量类:Vector2D.as (再次强烈建议不熟悉向量运算的童鞋,先回去恶补一下高等数学-07章空间解释几何与向量代数.pdf) 原作者:菩提树下的 ...

  9. “AS3.0高级动画编程”学习:第二章转向行为(下)

    在上一篇里,我们学习了“自主角色”的一些基本行为:寻找(seek).避开(flee).到达(arrive).追捕(pursue).躲避(evade).漫游(wander).这一篇将继续学习其它更复杂, ...

随机推荐

  1. 堆排序的OC实现

    /* 建议先看堆调整方法,堆调整了解了,整个排序算法就算掌握了 */ - (void)viewDidLoad { [super viewDidLoad]; /* 测试数据 */ NSArray *ar ...

  2. javascript函数 第14节

    <html> <head> <title>function</title> </head> <body> 1.函数形式<b ...

  3. 2016.08.07计算几何总结测试day2

    T1 bzoj: [Usaco2010 OPen]Triangle Counting 数三角形 看到这个题n那么大, 于是想到极角排序搞一搞,然而排完序后立马懵逼,完全不知道接下来应该怎么写.... ...

  4. ubuntu 安装qt 5.1的各种错误

    错误太多了,我就不一一说 了,直接一条命令搞定 sudo apt-:i386 libx11-:i386 libglib2.-:i386 libfreetype6:i386 libSM6:i386 li ...

  5. 2015 Multi-University Training Contest 1 题解&&总结

    ---------- HDU 5288 OO’s Sequence 题意 给定一个数列(长度<$10^5$),求有多少区间[l,r],且区间内有多少数,满足区间内其它数不是他的约数. 数的范围$ ...

  6. 利用php获取图片完整Exif信息类 获取图片详细完整信息类

    <?php /** * @Author: TonyLevid * @Copyright: TonyLevid.com * @Name: Image Exif Class * @Version: ...

  7. 浅析JAVA设计模式(二)

    2. 里氏替换原则:LSP(Liskov Substitution Principle)里氏替换原则,定义为只要父类出现的地方子类就可以出现,而且用子类替换后,程序也不会出现问题,使用者根本不用关心是 ...

  8. Android学习7--日志信息的使用

    在代码的调试中,日志信息是必不可少的,关于日志信息的使用,接下来,小编简要的说明一下: 日志分为几种:Verbose:从字面上解释,verbose为冗长的,啰嗦的,所以verbose日志信息输出的内容 ...

  9. Java源代码分析与生成

    源代码分析:可使用ANTLRANTLR是开源的语法分析器,可以用来构造自己的语言,或者对现有的语言进行语法分析. JavaParser 对Java代码进行分析 CodeModel 用于生成Java代码 ...

  10. php练习5——简单的学生管理系统(隐藏控件的使用)

    要求:    程序:gradeManage.html和gradeManage.php          结果       注意:   1.使用隐藏控件时,得在不同表单下,不能在同一个表单下:   2. ...