【问题标题】:How to draw a star in AS3AS3中如何画星星
【发布时间】:2013-04-27 23:08:40
【问题描述】:

我以这种方式编写了我的代码,但并没有以正确的方式出现。我不知道我错过了什么,我无法弄清楚。如果有人想帮忙!!

private var _color:uint;
private var _radius:int;

public function Star(c:uint = 0xff0000, r:int = 15)
{
  _color = c;
  _radius = r;

  createStar();

}       
    private function createStar():void      
    {           
      this.graphics.lineStyle(3,_color);
      this.graphics.moveTo(_radius,0);

      for(var i:int = 1; i < 11; i++)
      {
        var radius2:Number = _radius;

        if (i % 2 > 0)
      }
      _radius = _radius/2;
      var angle:Number = (6.28 / 5) * i;
      this.graphics.lineTo(Math.cos(angle) * radius2, Math.sin(angle) * radius2);
   }
}

【问题讨论】:

    标签: actionscript-3 flash-builder


    【解决方案1】:

    你的 createStar() 函数看起来很糟糕:

    • 未完成的条件 (if (i % 2 &gt; 0)) 这是一个语法错误
    • 硬编码值:var angle:Number = (6.28 / 5) * i;,假设 6.28 应该是 Math.PI * 2,可能还不错,但 i 计数器不属于那里
    • 画一条线 (this.graphics.lineTo(Math.cos(angle) * radius2, Math.sin(angle) * radius2);) 并期待一颗星星

    你可能想尝试这样的事情:

    private function createStar():void      
    {           
        graphics.lineStyle(3,_color);
        graphics.moveTo(_radius,0);
    
        var angleIncrement = Math.PI / 5;//5 pointed star -> 10 point arround the circle (360 degrees or Math.PI * 2): 5 outer points, 5 inner points
        var ninety:Number = Math.PI * .5;//offset the rotation by 90 degrees so the star points up
    
        for(var i:int = 0; i <= 10; i++){//for each point
            var radius:Number = (i % 2 > 0 ? _radius : _radius * .5);//determine if the point is inner (half radius) or outer(full radius)
            var px:Number = Math.cos(ninety + angleIncrement * i) * radius;//compute x
            var py:Number = Math.sin(ninety + angleIncrement * i) * radius;//and y using polar to cartesian coordinate conversion
            if(i == 0) graphics.moveTo(px,py);//move the 'pen' so we don't draw lines from (0,0)
            graphics.lineTo(px,py);//draw each point of the star
        }
    }
    

    【讨论】:

      【解决方案2】:

      你可以看看this blog post

      或者在这里的类代码:http://pastie.org/929979#265

      在其中查找drawStar 函数

      (我没有复制出处,因为我没有向作者索要)

      【讨论】:

        猜你喜欢
        • 2020-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-28
        • 2019-12-28
        • 2016-01-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多