阳光VIP

少壮不努力,老大徒伤悲。平日弗用功,自到临期悔。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

多媒体交互应用基础(5)

Posted on 2012-02-17 19:55  阳光VIP  阅读(185)  评论(0编辑  收藏  举报

问题一:如何为影片剪辑添加属性信息?

MovieClip 类是属于动态类,动态类的特点可以动态添加属性

 

如: var mc:MovieClip =new MovieClip();

     mc.msg=1;

     mc.face=”beautiful”;

这样我们可以加入一些属性来标识我们的影片剪辑的标记。

 

步骤:

   我们在场景里面复制10个小球mc 通过为实例动态添加属性,我们为每一个小球都标记了一个记号

 

  1. package 
  2. {
  3.     import flash.display.MovieClip;
  4.     import flash.events.*;
  5.     import flash.display.SimpleButton;
  6.     public class Example3 extends MovieClip
  7.     {
  8.         public function Example3()
  9.         {
  10.            init();
  11.          
  12.         }
  13.         
  14.         private function init():void
  15.         {
  16.             
  17.             for(var i:int=0;i<10;i++)
  18.             {
  19.                 var obj:mc=new mc();
  20.                 addChild(obj);
  21.                 obj.x=50+obj.width*i;
  22.                 obj.y=200;
  23.                 obj.msg=i;//为mc 动态增加一个属性msg ,用于记录影片剪辑的信息
  24.                 obj.addEventListener(MouseEvent.CLICK,onClik);
  25.                 
  26.             }
  27.                     
  28.         }
  29.         
  30.         
  31.         private function onClik(e:MouseEvent):void
  32.         {
  33.              var mymc:MovieClip= e.currentTarget as MovieClip;
  34.              trace(mymc.msg);//输出的是mc的编号
  35.         }
  36.         
  37.                 
  38.         
  39.     }
  40. }

注: mc类是在库链接里继承了Movieclip类的

  1.  obj.msg=i;//为mc 动态增加一个属性msg ,用于记录影片剪辑的信息
  2.                 obj.addEventListener(MouseEvent.CLICK,onClik);

注意看这里,我们给每一个mc都添加这个msg 的信息,通过监听Mouse事件,我们可以在输出面板里面看到

0-----9的数字,每一个mc的msg信息都不相同。那么我们就可以利用他来为我们的影片剪辑做一些记号。

问题2 如何通过影片剪辑的属性实现一些小应用?

 

做一个对碰的匹配操作

步骤:

假设有五个不同颜色的小球,通过复制让它成对出现在场景上(10个小球会在场景上,两两成对出现)。通过点击影片剪辑,判断两个对象是否产生匹配,如果是输出匹配,如果不是输出不匹配。简单的说,假如你点击了第一个小球的编号是1 ,然后我再去点击第二小球,如果这次编号也同样相同的话,那么表示编号匹配了。否则不匹配

 

1=1

2=2

3=3

这样就产生匹配。

 

1!=3

这样就产生了不匹配

  1. package 
  2. {
  3.     import flash.display.MovieClip;
  4.     import flash.events.*;
  5.     import flash.display.SimpleButton;
  6.     public class Example3 extends MovieClip
  7.     {
  8.         private var list:Array=new Array();
  9.         private var firstMc:MovieClip;//第一个影片剪辑
  10.         private var secondMc:MovieClip;//第二个影片剪辑
  11.         public function Example3()
  12.         {
  13.             init();
  14.         }
  15.         private function init():void
  16.         {
  17.             for (var j:int=0; j<5; j++)
  18.             {
  19.                 list.push(j);
  20.                 list.push(j);
  21.                 trace("输出的数组"+list);//00 11 22 33 44 
  22.             }
  23.             for (var i:int=0; i<10; i++)
  24.             {
  25.                 var obj:mc=new mc();
  26.                 addChild(obj);
  27.                 obj.x=50+obj.width*i;
  28.                 obj.y=200;
  29.                 var r:uint=Math.floor(Math.random()*list.length);//为mc 动态增加一个属性msg ,用于记录影片剪辑的信息
  30.                 obj.msg=list[r];
  31.                 list.splice(r,1);//删除编码
  32.                 obj.gotoAndStop(obj.msg+1);
  33.                 obj.addEventListener(MouseEvent.CLICK,onClik);
  34.             }
  35.         }
  36.         private function onClik(e:MouseEvent):void
  37.         {
  38.             var mymc:MovieClip= e.currentTarget as MovieClip;
  39.             trace(mymc.msg);//输出的是mc的编号
  40.             if (firstMc==null)
  41.             {
  42.                 firstMc=mymc;
  43.             } else if (secondMc==null)
  44.             {
  45.                 secondMc=mymc;
  46.                 if (firstMc.msg==secondMc.msg)
  47.                 {
  48.                     trace("匹配");
  49.                     firstMc=null;
  50.                     secondMc=null;
  51.                 } else
  52.                 {
  53.                     trace("不匹配");
  54.                     firstMc=null;
  55.                     secondMc=null;
  56.                 }
  57.             }
  58.         }
  59.     }
  60. }

 

在这里之前。我们需要在mc时间轴里面新建10个帧

 

创建10个关键帧,小球的颜色是不同的,为了让他成对产生,先创建5帧,每一帧的颜色不同,然后通过复制关键帧粘贴到其余

五帧里面。这样就可以产生成对的小球。

  1.    for (var j:int=0; j<5; j++)
    1.  var r:uint=Math.floor(Math.random()*list.length);//为mc 动态增加一个属性msg ,用于记录影片剪辑的信息
    2.                 obj.msg=list[r];
    3.                 list.splice(r,1);//删除编码
    4.                 obj.gotoAndStop(obj.msg+2);

    这一段是指定随机的编号,每次指定完编号就在数组里面删除,list数组是记录标记号这样就能产生在场景上产生成对的不同颜色的小球出现。

     

     

    逻辑判断是否匹配:

    我们为每一个小球指定了数组

    1. private function onClik(e:MouseEvent):void
    2.         {
    3.             var mymc:MovieClip= e.currentTarget as MovieClip;
    4.             trace(mymc.msg);//输出的是mc的编号
    5.             if (firstMc==null)
    6.             {
    7.                 firstMc=mymc;
    8.             } else if (secondMc==null)
    9.             {
    10.                 secondMc=mymc;
    11.                 if (firstMc.msg==secondMc.msg)
    12.                 {
    13.                     trace("匹配");
    14.                     firstMc=null;
    15.                     secondMc=null;
    16.                 } else
    17.                 {
    18.                     trace("不匹配");
    19.                     firstMc=null;
    20.                     secondMc=null;
    21.                 }
    22.             }

    主要使用两个MovieClip 类型

    第一点击的是firstMc ,第二次点击的是 secondMc 当鼠标点击了两次的时候,那么就进行匹配判断。

    只要是判断里面的信息是否相等

    if (firstMc.msg==secondMc.msg)

    {

    }

    else

    {

    }

    这样就完成了一个简单应用了

    为影片剪辑添加属性

     
  2.             {
  3.                 list.push(j);
  4.                 list.push(j);
  5.                 trace("输出的数组"+list);//00 11 22 33 44 
  6.             }

这一步创建 编号标志用的 输出的标记号为 0,0,1,1,2,2,3,3,4,4

输出的数组0,0
输出的数组0,0,1,1
输出的数组0,0,1,1,2,2
输出的数组0,0,1,1,2,2,3,3
输出的数组0,0,1,1,2,2,3,3,4,4