查看: 3795|回复: 4
打印 上一主题 下一主题

flash 3d基础学习

[复制链接]

435

主题

2

听众

6371

积分

高级设计师

Rank: 6Rank: 6

纳金币
6372
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-8-31 08:43:17 |只看该作者 |倒序浏览
  3d图形在原有的平面x,y的基础上加入深度z轴,使用几何***法重新计算物体x,y坐标。
坐标系统
flash 3d中默认使用右手坐标系统,x坐标从左到右,y坐标从上到下,z从外到里指向屏幕.





例子,首先创建一个ball类。







package
{
    import flash.display.ColorCorrection;
    import flash.display.Sprite;
      
    /**
     *  @author:Gaara
     *  2012-3-5
     *
     **/
    public class Ball extends Sprite
    {
        public function Ball(x:Number,y:Number,z:Number,color:int=0x00FF00,radius:Number=5)
        {
            super();
              
            this._x = x;
            this._y = y;
            this._z = z;
              
            graphics.beginFill(color);
            graphics.drawCircle(0,0,radius);
            graphics.endFill();
        }
         
        public var _x:Number;
        public var _y:Number;
        public var _z:Number;        
    }
}



创建主类




package
{
    import flash.display.Sprite;
    import flash.events.Event;
      
    /**
     *  @author:Gaara
     *  2012-3-5
     *
     **/
    [SWF(width="800", height="600" ,frameRate="12", backgroundColor="#000000")]
    public class TestCos extends Sprite
    {
        /** 绘制小球  **/
        private var ballVec:Vector.<Ball> = new Vector.<Ball>;
         
        /**观察者与屏幕距离  **/
        private const D:Number = 200;
         
        /**旋转角度  **/
        private var angelT:Number = 0.001;
         
        private var radian:Number = angelT * 180 /Math.PI;
         
        private var vpX:Number = 100;
        private var vpY:Number = -50;
         
        public function TestCos()
        {
              
            this.x = stage.stageWidth / 2;
            this.y = stage.stageHeight / 2;
              
            var ball0:Ball = new Ball(100,100,0);
            var ball1:Ball = new Ball(0,100,0);
            var ball2:Ball = new Ball(0,0,0);
            var ball3:Ball = new Ball(100,0,0);
            var ball4:Ball = new Ball(100,100,100,0xFF0000);
            var ball5:Ball = new Ball(0,100,100,0xFF0000);
            var ball6:Ball = new Ball(0,0,100,0xFF0000);
            var ball7:Ball = new Ball(100,0,100,0xFF0000);
              
            ballVec.push(ball0);
            ballVec.push(ball1);
            ballVec.push(ball2);
            ballVec.push(ball3);
            ballVec.push(ball4);
            ballVec.push(ball5);  
            ballVec.push(ball6);
            ballVec.push(ball7);
              
            for each (var ball:Ball in ballVec)  
            {
                addChild(ball);
            }
              
            this.addEventListener(Event.ENTER_FRAME,onAdd);
        }
         
        protected function onAdd(event:Event):void
        {                    
            for each (var ball:Ball in ballVec)  
            {
                var _x:Number = ball._x*Math.cos(radian) - ball._y*Math.sin(radian);
                var _y:Number = ball._y*Math.cos(radian) + ball._x*Math.sin(radian);
                  
                ball._x = _x ;
                ball._y = _y ;
                  
                var myRadio:Number = D/(D + ball._z);
                var pX:Number = (_x - vpX) * myRadio;
                var pY:Number = (_y - vpY) * myRadio;
                ball.x = vpX + pX;   
                ball.y = vpY + pY;
                  
                trace("myRadio:" + myRadio+" px:" + pX +" py:" + pY);
                ball.scaleX = ball.scaleY =  myRadio;
      
                ball.alpha = 100 * myRadio;
            }
        }
    }
}


分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

0

主题

2

听众

3238

积分

中级设计师

Rank: 5Rank: 5

纳金币
0
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-7-10 12:06:45 |只看该作者
thank you!
回复

使用道具 举报

.    

3797

主题

11

听众

5万

积分

首席设计师

Rank: 8Rank: 8

纳金币
32328
精华
41

活跃会员 优秀版主 荣誉管理 论坛元老

板凳
发表于 2014-10-21 22:12:19 |只看该作者
回复

使用道具 举报

17

主题

1

听众

464

积分

设计实习生

Rank: 2

纳金币
149
精华
0

最佳新人

地板
发表于 2014-11-22 10:21:34 |只看该作者
你更详细呀很好
回复

使用道具 举报

0

主题

0

听众

184

积分

设计实习生

Rank: 2

纳金币
13
精华
0
5#
发表于 2018-11-25 20:21:24 |只看该作者
谢谢分享
回复

使用道具 举报

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

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-15 00:28 , Processed in 0.092854 second(s), 31 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部