11RIA 闪客社区 - 最赞 Animate Flash 论坛

搜索
查看: 2431|回复: 2
上一主题 下一主题

[鼠标交互] 三角函数

[复制链接] TA的其它主题
发表于 2019-7-22 00:35:56 | 显示全部楼层 |阅读模式

【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 qiuhao 于 2019-7-22 00:39 编辑

[Actionscript3] 纯文本查看 复制代码
package  {
        import flash.display.Sprite;
        import flash.display.Graphics;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.text.TextField;
        import flash.text.TextFormat;
        
        
        public class Main extends Sprite{
                        private var _con:Sprite;
                        private var _cir:Sprite = new Sprite();
                        private var _cirX:Number;
                        private var _cirY:Number;
                        private var _dx:Number;
                        private var _dy:Number;
                        private var _r:Number;
                        private var _n:Number;
                        private var angle_txt:TextField;
                        private var sin_txt:TextField;
                        private var cos_txt:TextField;
                        private var tan_txt:TextField;
                        
                public function Main() {
                        // constructor code
                        initView();
                        _con.addEventListener(MouseEvent.MOUSE_DOWN,drawCir);
                        _con.addEventListener(MouseEvent.MOUSE_UP,remove);
                        _con.addEventListener(MouseEvent.ROLL_OUT,remove);
                }
                private function initView():void{
                        _con = new Sprite;
                        _con.graphics.beginFill(0xcccccc);
                        _con.graphics.drawRect(-100,-100,200,200);
                        _con.graphics.endFill();
                        _con.graphics.lineStyle(1,0x333333);
                        _con.graphics.moveTo(-110,0);
                        _con.graphics.lineTo(110,0);
                        _con.graphics.lineTo(105,-3);
                        _con.graphics.moveTo(110,0);
                        _con.graphics.lineTo(105,4);
                        _con.graphics.moveTo(0,110);
                        _con.graphics.lineTo(0,-110);
                        _con.graphics.lineTo(-3,-105);
                        _con.graphics.moveTo(0,-110);
                        _con.graphics.lineTo(4,-105);
                        for(var i:int=0;i<11;i++){
                                if(i==5){
                                        continue;
                                }
                                _con.graphics.moveTo(i*20-100,0);
                                _con.graphics.lineTo(i*20-100,-3);
                                _con.graphics.moveTo(0,i*20-100);
                                _con.graphics.lineTo(3,i*20-100);
                        }
                        _con.graphics.lineStyle(1,0xffffff);
                        for(var j:int=0;j<11;j++){
                                if(j==5){
                                        continue;
                                }
                                _con.graphics.moveTo(j*20-100,-100);
                                _con.graphics.lineTo(j*20-100,100);
                                _con.graphics.moveTo(-100,j*20-100);
                                _con.graphics.lineTo(100,j*20-100);
                        }
                        angle_txt = new TextField();
                        sin_txt = new TextField();
                        cos_txt = new TextField();
                        tan_txt = new TextField();
                        angle_txt.autoSize = "left";
                        sin_txt.autoSize = "left";
                        cos_txt.autoSize = "left";
                        tan_txt.autoSize = "left";
                        _con.addChild(_cir);
                        addChild(sin_txt);
                        addChild(cos_txt);
                        addChild(angle_txt);
                        addChild(tan_txt);
                        angle_txt.x = 400;
                        angle_txt.y = 100;
                        sin_txt.x = 400;
                        sin_txt.y = 120;
                        cos_txt.x = 400;
                        cos_txt.y = 140;
                        tan_txt.x = 400;
                        tan_txt.y = 160;
                        addChild(_con);
                        _con.x = stage.stageWidth/2;
                        _con.y = stage.stageHeight/2;
                }
                
                private function zuobiao(evt:Event):void{
                        _cirX = mouseX-stage.stageWidth/2;
                        _cirY = mouseY-stage.stageHeight/2;
                        //trace(_cirX);
                        _cir.graphics.clear();
                        _cir.graphics.beginFill(0x000000);
                        _cir.graphics.drawCircle(_cirX,_cirY,2);
                        _cir.graphics.endFill();
                        _cir.graphics.lineStyle(1,0x0000ff);
                        _cir.graphics.moveTo(0,0);
                        _cir.graphics.lineTo(_cirX,_cirY);
                        _cir.graphics.moveTo(_cirX,_cirY);
                        _cir.graphics.lineTo(_cirX,0);
                        _n = Math.round(Math.atan2(-1*_cirY,_cirX)*180/Math.PI*100)/100;
                        if(_n<0){
                                _n+=360;
                        }
                        drawArc(_cir.graphics,10,0,_n);
                        angle_txt.text = "度数: " + _n;
                        sin_txt.text = "正弦: " + Math.round(Math.sin(_n/180*Math.PI)*100)/100;
                        cos_txt.text = "余弦: " + Math.round(Math.cos(_n/180*Math.PI)*100)/100;
                        if(_n == 90||_n == 270){
                                tan_txt.text = "正切: 无意义";
                        }else{
                                tan_txt.text = "正切: " + Math.round(Math.tan(_n/180*Math.PI)*100)/100;
                        }
                }
                
                private function drawCir(evt:MouseEvent):void{
                        this.addEventListener(Event.ENTER_FRAME,zuobiao);
                }
                
                private function remove(evt:MouseEvent):void{
                        this.removeEventListener(Event.ENTER_FRAME,zuobiao);
                }
                
                private function drawArc(g:Graphics,radius:Number,startAngle:Number,endAngle:Number):void{
                        for(var i:int=startAngle;i<=endAngle;i++){
                        var px:Number=radius*Math.cos(-i*Math.PI/180);
                        var py:Number=radius*Math.sin(-i*Math.PI/180);
                        if(i==startAngle)
                        g.moveTo(px,py);
                        g.lineTo(px,py);                
                        }
                }
        }
}
[align=right]




评分

参与人数 1银子 +10 金子 +1 贡献 +1 收起 理由
TKCB + 10 + 1 + 1

查看全部评分

发表于 2019-7-22 09:02:01 | 显示全部楼层
【11RIA 闪客社区,评分公示】:
是否有价值:一般(银子 +10  贡献 +1)
是否原创:是(金子 +1)
是否翻译:否
如对自己的评分有疑问,则咨询版主、管理员等。
回复

使用道具 举报

发表于 2019-7-22 12:09:54 | 显示全部楼层
感觉很好,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)



快速回复 返回顶部 返回列表