日历

« 2008-10-11  
   1234
567891011
12131415161718
19202122232425
262728293031 

音乐欣赏

统计信息

  • 访问量: 157
  • 日志数: 1
  • flash数: 1
  • 建立时间: 2007-05-21
  • 更新时间: 2007-11-22

RSS订阅

欢迎进入我的空间来……

我的最新日志

  • flash学习(转载)

    2007-11-22

    思路:1.createEmptyMovieClip(MC),位于舞台中央,使之不断旋转;
    2.用MC作载体,复制出num(150)个(p0~p149)影片,全部都依附于MC上;
    3.AS中共有2个函数(function),分别为
    Change()和getShape():
    Change():首先,获得一个随机图形编号(shape),然后为所有MC["p"+i]点设置大小及透明度,再调用getShape()获得该点的目标坐标;
    getShape():根据shape编号,返回组成该图形的目标坐标;

    4.用数组PS[0]存X坐标,PS[1]存Y坐标;
    5.MC["p"+i].onEnterFrame:"跑"向各自的目标点.


    步骤1:
        绘制10*10的圆点,保存为影片剪辑,连接—>导出—>标志符"p"
    步骤2:
    加入AS代码:
    _root.createEmptyMovieClip("MC", 10);
    MC._x = 200;
    MC._y = 150;
    MC.onEnterFrame = function() {
     this._rotation += 2;
    };
    var num:Number = 150;
    //圆点p的个数
    for (i=0; i<num; i++) {
     MC.attachMovie("p", "p"+i, i);
    }
    var PS:Array = new Array(2);
    //PS[0]存储X坐标,PS[1]存储Y坐标.
    _root.onMouseDown = function() {
     
    Change();
    //鼠标点击后变换图形
    };


    function Change() {
     shape = int(Math.random()*2);

    //获得随机图形
     for (i=0; i<num; i++) {
      p = MC["p"+i];
      p._xscale = p._yscale=50+Math.random()*50;
      p._alpha = 50+Math.random()*50;
      getShape(shape);
      p.tox = PS[0];
      p.toy = PS[1];
    //调用getShape()函数后,获得MC["p"+i]的X,Y目标坐标
      p.onEnterFrame = function() {
       this._x += 0.1*(this.tox-this._x);
       this._y += 0.1*(this.toy-this._y);
    //点MC["p"+i] 向目标坐标移动, 移动步长为0.1*(目标坐标 - 当前坐标);
    //越接近目标,步长越小。最终,当前坐标=目标坐标,不再移动。

      };
     }
    }


    function getShape(shape) {

    //用shape的值作为判断图形的依据
     var size:Number = 100;
     var angle:Number = Math.random()*360*Math.PI/180;
     switch (shape) {
    //====================直线======================
     case 0 :
      PS[0] = -size+random(size*2);
      PS[1] = 0;
      break;
    //====================圆======================
     case 1 :
      PS[0] = size*Math.cos(angle);
      PS[1] = size*Math.sin(angle);
      break;
     }
    }

     


    可变化的图形越多,这个程序的观赏性越强
    下面补充一些图形,把他们加入switch语句中即可:

    var size:Number = 100;
    var angle:Number = Math.random()*360*Math.PI/180;

    十字
      switch (int(Math.random()*2)) {
      case 0 :
       PS[0] = -size+random(size*2);
       PS[1] = 0;
       break;
      case 1 :
       PS[0] = 0;
       PS[1] = -size+random(size*2);
      }


    三棱形
      r = size*Math.cos(3*angle);
      PS[0] = r*Math.cos(angle);
      PS[1] = r*Math.sin(angle);


    蝶形
      PS[0] = size*Math.cos(angle);
      PS[1] = size*Math.sin(2*angle);


    正方形
      rectangle = int(random(4));
      switch (rectangle) {
      case 0 :
       PS[0] = -size+random(size*2);
       PS[1] = -size;
       break;
      case 1 :
       PS[0] = -size;
       PS[1] = -size+random(size*2);
       break;
      case 2 :
       PS[0] = size-random(size*2);
       PS[1] = size;
       break;
      case 3 :
       PS[0] = size;
       PS[1] = -size+random(size*2);
      }


    同心圆
      lary = random(4);
      PS[0] = lary*40*Math.cos(angle);
      PS[1] = lary*40*Math.sin(angle);


    螺旋形
      A = 3;
      r = A*angle;
      PS[0] = 7*r*Math.cos(r);
      PS[1] = 7*r*Math.sin(r);


    心形
      var r = size*Math.cos(angle)-size;
      PS[0] = r*Math.cos(angle);
      PS[1] = r*Math.sin(angle);


    V字
      PS[0] = -size+random(2*size);
      PS[1] = -size+Math.abs(PS[0]);


     

    Flash充电:switch语句
    1.作用:Switch语句代替if/else的嵌套结构,解决多重选择的问题,让语法更清楚简单。
    2.说明:在switch语句中,我们可以将case-break视为次单元。除了default之外,每个次单元的开头都是case,结尾为break,break的作用是跳离本次switch语句。如果某个case次单元没有加上break,则在执行该区段语句后,继续往下一个case次单元执行。
    3.语法:
    switch(键值){
    case 条件值1:
      //分段1语句
      break;
    case
    条件值2:
      //分段2语句
      break;
    case
    条件值N:
      //分段N语句
      break;
    default :
      //默认语句
    }

     

    例1:请改变i的设定看看有什么结果?
    var i = 2;
    switch (i) {
    case 1 :
     trace("i=1");
     break;
    case 2 :
     trace("i=2");
     break;
    case 3 :
    case 4 :
     trace("i=3 or i=4");
     break;
    default :
     trace("i is not 1,2,3,4");
    }

     

    例2:获得键盘键值实例
    var listenerObj:Object = new Object();
    listenerObj.onKeyDown = function() {
     switch (String.fromCharCode(Key.getAscii())) {
     case "A" :
     trace("you pressed A");
     break;
     case "a" :
     trace("you pressed a");
     break;
     case "E" :
     case "e" :
     trace("you pressed E or e");
     break;
     case "I" :
     case "i" :
     trace("you pressed I or i");
     break;
     default :
     trace("you pressed some other key");
     break;
     }
    };
    Key.addListener(listenerObj);

Open Toolbar