快速业务通道

在FLASH中实现画中画效果

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-14

?   大家对画中画的概念一定比较熟悉,就是在大屏幕显示的同时,一个小屏幕也同时显示另一个不同的画面,很像现在好多电视机都具备的画中画的功能。

  下面我们就以实例剖析的方式来看看如何在Flash中模拟实现画中画的功能。
将鼠标移到“小屏”范围,或者点击“小屏”范围,你会看到不同的变化   其实制作思路很简单:在主屏幕上设置一个小的屏幕,然后将一个MC设置到小屏幕的位置处,这样就实现了简单的画中画效果,也可以利用一些小的技巧来丰富画中画的功能,比如,可以将大小屏幕中的动画互换等。

  1.  取得大小屏幕的高和宽:

  这里用到了getBounds(targetcoordinatespace);
  这个语句意思是取得MC相对于时间轴targetcoordinatespace(参数)处的坐标最大最小值,得到大小屏的高和宽数值,相关语句:   size1 = _root.aa.getBounds(_root);
  width1 = size1.xmax-size1.xmin;
  height1 = size1.ymax-size1.ymin;
  size2 = _root.bb.getBounds(_root);
  width2 = size2.xmax-size2.xmin;
  height2 = size2.ymax-size2.ymin;
  // 取得两个框的长宽和坐标大小;   2.  可以准确定位要播放的MC的初始位置和影片大小   with (mc1) {
   _x = size1.xmin+width1/2;
   _Y = size1.ymin+height1/2;
   _width = width1;//定义影片的大小
   _height = height1;
  }
  with (mc2) {
   _x = size2.xmin+width2/2;
   _Y = size2.ymin+height2/2;
   _width = width2;
   _height = height2;
  }   3.  画中画的MOUSE事件的实现:   on (rollOver) {
   removeMovieClip ("_root.mc11");
   removeMovieClip ("_root.mc22");//为的是互换画面时删去复制的大屏里的MC
   with (_root.mc2) {
    _visible = 1;
    stop();
   }
   _root.nowframe2 = _root.mc2._currentframe;
   //定义一个变量取得当前帧数以达到大屏画中画从小屏暂停处开始
   duplicateMovieClip ("_root.mc2", "mc22", 22);
   //复制一个小屏里的MC,将要用到大屏里去
   with (_root.mc1) {
    stop();
    _visible = 0; //让大屏里的消失
   }
   with (_root.mc22) {
    _x = _root.size1.xmin+_root.width1/2;
    _Y = _root.size1.ymin+_root.height1/2;
    _width = _root.width1;
    _height = _root.height1;//定义刚才复制好的MC的宽高适合大屏,坐档和宽高
    gotoAndPlay(_root.nowframe2);//让它从小屏暂停处开始播放
   }
  }
  on (rollOut) {
   _root.mc2.play();
   _root.mc1.play();
   removeMovieClip ("_root.mc22");
   _root.mc1._visible = 1;删去复制的MC,并恢复原来的图像
  }
  on (release) {
   _root.nowframe2 = _root.mc2._currentframe;
   _root.nowframe1 = _root.mc1._currentframe;分别取得两个MC的当前帧数值
  以下得新定义两个MC的大小和位置以达到大小屏相互交换的效果
  with (_root.mc2) {
   _x = _root.size1.xmin+_root.width1/2;
   _Y = _root.size1.ymin+_root.height1/2;
   _width = _root.width1;
   _height = _root.height1;
   gotoAndPlay(_root.nowframe2);
  }
  with (_root.mc1) {
   _x = _root.size2.xmin+_root.width2/2;
   _Y = _root.size2.ymin+_root.height2/2;
   _width = _root.width2;
   _height = _root.height2;
   gotoAndPlay(_root.nowframe1);
  }
  gotoAndStop (2); //实现效果延续,具体解释见下
  }   4.  交换后画中画效果的延续   把按健做成两个帧的MC,设置点击后跳到后面第二帧,用第二帧上的按键来控制,第二帧的AS同第一帧大同小异。

  扩展的运用   将这个代码变一下,可用loadMovie ("12345.swf", "/MC");引入外部的SWF文件代替内部的MC,同样达到画中画效果。 关键词:画中画

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号