首页  韩国资源  酷站加油  我的展厅  设计名站  古典元素  推荐下载  设计欣赏  每周专访  招募精英  人才专区  网页教程  平面设计  编程开发  设计竞赛
当前位置:首页 > 网页教程 > Flash教程 > 正文
Google
动态画sin和它的移动
来源:闪吧论坛 作者:sxl001 2007年11月23日 16:29 网友评论:0条 点击:

好久未发帖了,刚才看到有人问到画sin后怎样移动所画的曲线,现举一小例,抛砖引玉... 

效果如下:(并附源文件)

/UploadTeach/200711/2007112215613785.swf
源文件:画sin.rar

以下代码直接拷贝到帧上就行了:

// x0 y0 起点坐标 |  k 垂直幅度  |  disX 水平幅度  disY  周期   |   i  速度变量
var x0:Number = 100, y0:Number = 200, k:Number = 100, disX:Number = 2, disY:Number = 1, i:Number = 0;
//===  画水平线背景  =======================
drawViewX();
function drawViewX() {
        // wh 单元格长与宽  
        var wh:Number = 10;
        this.createEmptyMovieClip("lineX", this.getNextHighestDepth());
        onEnterFrame = function () {
                with (lineX) {
                        lineStyle(1, 0xCCCCCC, 100);
                        moveTo(0, wh);
                        lineTo(Stage.width, wh);
                }
                if (lineX._width>=Stage.width) {
                        wh += 10;
                }
                if (wh>=Stage.height) {
                        delete onEnterFrame;
                        drawViewY();
                }
                updateAfterEvent();
        };
}
//===  画垂线背景  =========================
function drawViewY() {
        // wh 单元格长与宽  
        var wh:Number = 10;
        this.createEmptyMovieClip("lineY", this.getNextHighestDepth());
        onEnterFrame = function () {
                with (lineY) {
                        lineStyle(1, 0xCCCCCC, 100);
                        moveTo(wh, 0);
                        lineTo(wh, Stage.height);
                }
                if (lineX._width>=Stage.height) {
                        wh += 10;
                }
                if (wh>=Stage.width) {
                        delete onEnterFrame;
                        drawX();
                }
                updateAfterEvent();
        };
}
//========  画sin主函数   ======================
function drawSin() {
        this.createEmptyMovieClip("line", this.getNextHighestDepth());
        with (line) {
                lineStyle(2, 0x000000, 100);
                moveTo(x0, y0);
        }
        var xx:Number = 0;
        var yy:Number = 0;
        line.onEnterFrame = function() {
                xx = x0+i/disX;
                yy = y0-Math.sin(i*Math.PI/180)*k;
                ball._x = xx;
                ball._y = yy;
                line.lineTo(ball._x, ball._y);
                i += 5;
                if (i>disY*360) {
                        delete this.onEnterFrame;
                        ball._visible = false;
                        //
                        //==========
                        _root.createTextField("sxl001", _root.getNextHighestDepth(), 430, 380, 125, 20);
                        sxl001.background = true;
                        sxl001.backgroundColor = 0xFFCCFF;
                        sxl001.autoSize = "left";
                        sxl001.text = "===== sxl001 =====";
                        _root.createTextField("txt", _root.getNextHighestDepth(), 200, 360, 150, 20);
                        txt.text = "方向键控制曲线的移动";
                        //
                        Key.addListener(myListener);
                }
        };
}
//==  画坐标系的X轴  =========================
var v0:Number = 0;
function drawX() {
        this.createEmptyMovieClip("xline", this.getNextHighestDepth());
        with (xline) {
                lineStyle(1, 0x000000, 100);
                moveTo(20, y0);
        }
        xline.onEnterFrame = function() {
                v0 += 20;
                this.lineTo(v0, y0);
                if (this._width>=Stage.width-40) {
                        delete this.onEnterFrame;
                        v0 = 0;
                        //==  画坐标系的Y轴
                        drawY();
                }
        };
}
//==  画坐标系的Y轴  =========================
function drawY() {
        this.createEmptyMovieClip("yline", this.getNextHighestDepth());
        with (yline) {
                lineStyle(1, 0x000000, 100);
                moveTo(x0, 20);
        }
        yline.onEnterFrame = function() {
                v0 += 20;
                this.lineTo(x0, 20+v0);
                if (this._height>=Stage.height-40) {
                        delete this.onEnterFrame;
                        //显示红色小球
                        ballShow();
                }
        };
}
//== 红色小球  ====================
function ballShow() {
        this.createEmptyMovieClip("ball", this.getNextHighestDepth());
        with (ball) {
                lineStyle(6, 0xFF0000, 100);
                moveTo(0, 0);
                lineTo(0.5, 0);
                //= 画sin曲线
                drawSin();
        }
}
//==  方向键控制曲线移动 ====================
var myListener:Object = new Object();
myListener.onKeyDown = function() {
        switch (Key.getCode()) {
        case Key.LEFT :
                line._x -= 5;
                break;
        case Key.RIGHT :
                line._x += 5;
                break;
        case Key.UP :
                line._y -= 5;
                break;
        case Key.DOWN :
                line._y += 5;
                break;
        }
};
上一篇:神奇的橡皮刷   下一篇:通过实例学习AS3.0(四)
收藏此页】【打印】【关闭
 相关文章  我要点评
·赵小宇:E100自助赢大奖 畅享奥运年
·韩国Sintime插画作品(三)
·20000元征集“移动杯”中国(大庆)首届湿地文化节标识
·用AS3实再FLASH游戏的上下左右移动
·腾讯移动QQ将退出舞台 向飞信迁移工作已完成
·三点关于定点移动的解决方案分析
·酷讯否认收到过中国移动“红牌”
·J2ME移动资费页面的处理

免责声明:本站刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。对本文有任何异议,请联络:68design#163.com
转载要求:作者及来源信息必需保留。转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印。



关于我们 | 在线反馈 | 广告报价 | 友情链接 | 联系我们 | 免责声明 | 在线投稿 | 网站地图
Copyright © 2003-2007 68design.net, All Rights Reserve 【找网页设计师,当然上网页设计师联盟】