阳光VIP

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

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

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

问题一:如何让复制影片剪辑产生动态旋转效果?

 

步骤:复制10个小球,将每一个小球用数组管理。然后为数组里面每一个对象更改位置,和角度让其产生旋转效果

 

  1. package 
  2. {
  3.     import flash.display.MovieClip;
  4.     import flash.events.*;
  5.     import flash.display.SimpleButton;
  6.     public class Example extends MovieClip
  7.     {
  8.         private var R:int=120;//半径长度
  9.         private var angle:Number;//每一个小球相差的角度数
  10.         private var speed:Number=0;//小球的运动速度
  11.         private var list:Array=new Array();
  12.         public function Example()
  13.         {
  14.             init();
  15.         }
  16.         private function init():void
  17.         {
  18.             for (var i:int=0; i <10; i++)
  19.             {
  20.                 angle=2 * Math.PI / 10 * i + speed;
  21.                 var obj:mc=new mc;
  22.                 addChild(obj);
  23.                 list.push(obj);
  24.                 trace(list);
  25.                 obj.x=stage.stageWidth / 2 + Math.cos(angle) * R;
  26.                 obj.y=stage.stageHeight / 2 + Math.sin(angle) * R;
  27.                 obj.addEventListener(Event.ENTER_FRAME,Run);
  28.             }
  29.         }
  30.         private function Run(e:Event):void
  31.         {
  32.             speed+= 0.005;
  33.             for (var j:int=0; j < 10; j++)
  34.             {
  35.                 var angle:Number=(2 * Math.PI / 10 )* j + speed;
  36.                 list[j].x=stage.stageWidth / 2 +Math.cos(angle) * R;
  37.                 list[j].y=stage.stageHeight / 2 +Math.sin(angle) * R;
  38.             }
  39.         }
  40.     }
  41. }

 

第一步:复制10个小球在场景里面。

第二步:让10小球压栈,用数组管理。 list.push()

第三步:让速度每一帧产生改变,并循环为每一个小球改变位置,改变角度。

 

这样效果就出来了

 

如果改变一下其R半径,就可以实现椭圆的算法。小球围绕的轨迹运动是椭圆曲线。

如:

 

  1. list[j].x=stage.stageWidth / 2 +Math.cos(angle) *R;
  2.                 list[j].y=stage.stageHeight / 2 +Math.sin(angle) *30;
  1. list[j].x=stage.stageWidth / 2 +Math.cos(angle) *30;
  2.                 list[j].y=stage.stageHeight / 2 +Math.sin(angle) *R;

看看他们会发生什么改变呢