ActionScript源代码:百变图

资讯 驱动中国 若水 407 次阅读 0 条评论
分享 Q

    思路:
    1、createEmptyMovieClip(MC),位于舞台中央,使之不断旋转; 
    2、用MC作为载体,复制出num(150)个p(0-149)影片,全部都依附于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 :#p#分页标题#e#
                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次单元执行。#p#分页标题#e#
    3、语法:
    switch(键值){
    case 条件值1:
      //分段1语句
      break;
    case 条件值2:
      //分段2语句
      break;
    case 条件值N:
      //分段N语句
      break;
    default :
      //默认语句
    }

版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系 editor@qudong.com
本文价值 成为第一个评分的人
登录后为本文打分
网友评论0 条评论
正在回复 的评论取消
评论加载中…
🔐

登录后参与互动

评论、点赞均可赚积分
连续签到、邀请好友也有奖励 🎁

电脑端: 微信扫码登录 微信内: 一键登录

微信扫一扫

打开微信「扫一扫」,分享本文到朋友圈或好友