2010-01-06 3 views
0

Я пытаюсь построить равносторонний треугольник со следующим кодом, но я не вижу, чего я ожидал бы.
Я бы ожидал увидеть треугольник, нарисованный на сцене, но я его не вижу. Я думаю, что что-то не так с точки зрения расположения три-спрайт на экране.AS3: Math-related - построение равностороннего треугольника

public class test_drawing_triangle extends Sprite 
{ 
    public function test_drawing_triangle() 
    { 
     var tri:Sprite = new Sprite;  
     var nextx:int; 
     var nexty:int; 
     var prevx:int; 
     var prevy:int; 
     var angle:Number; 
     var radius:Number; 
     var deg:int; 
     var i:int; 

     radius = 10; 
     // tri.x = stage.stageWidth/2; 
     tri.y = 50; 

     tri.graphics.clear(); 
     tri.graphics.beginFill(0x000000, 0.5); 
     tri.graphics.moveTo(0,0); 

     for(deg = 0; deg < 360; deg += 120) 
     { 
      angle = deg * Math.PI/180; 
      nextx = Math.cos(angle) * radius; 
      nexty = Math.sin(angle) * radius; 
      tri.graphics.lineTo(nextx, nexty); 
     } 
     tri.graphics.endFill(); 
     addChild(tri); 
    } 
} 

UPDATE:.

теперь я могу видеть треугольник, но она не заполнена кажется, имеет, как правило, правильную форму, но я бы ожидать, что будет 3 примкнули, а чем 4. Если кто-то может занять секунду, чтобы скомпилировать это и посмотреть, что я описываю, это действительно поможет.

+2

«Это не работает» не очень полезное описание. Можете ли вы более точно описать, какая у вас проблема? –

+0

Я обновил свой вопрос, хотя должен сказать, что я никогда не говорил «это не работает». Это тоже не очень полезная критика. – jml

+0

Попробуйте настроить цветные сердечники – 2012-06-29 06:15:42

ответ

1

Я не уверен, понимаю ли я, что вы пытаетесь сделать, но если вы хотите иметь круги в углах треугольника. чем вам необходимо изменить

tri.graphics.drawCircle (0, 0, 2);

к

tri.graphics.drawCircle (nextx, nexty, 2);

DrawCircle принимает абсолютные х, у и не заботится о MoveTo

EDIT - используйте этот код вместо вашего цикла

deg = 30; 
angle = (deg * Math.PI)/180.0; 
nextx = Math.cos(angle) * radius; 
nexty = Math.sin(angle) * radius; 
(tri.graphics as Graphics).moveTo(nextx, nexty); 
for(deg = 150; deg < 420; deg += 120) 
{ 
angle = (deg * Math.PI)/180.0; 
nextx = Math.cos(angle) * radius; 
nexty = Math.sin(angle) * radius; 
(tri.graphics as Graphics).lineTo(nextx, nexty);  
} 
+0

OK; спасибо за это. – jml

+0

ничего себе! полностью работает! почему вам нужно использовать «как графику»? Я обязательно рассмотрю это в документах; но я не видел, чтобы этот синтаксис использовался раньше. – jml

+1

Извините за беспорядок, вам это действительно не нужно, мне просто нужно было что-то проверить в этом процессе, и оставил его. Переспать сейчас, уже полночь :) –

0

Этот код выглядит как его рисунок тремя кругами, центрированными на точках вашего треугольника. Если это так, то замените

tri.graphics.moveTo(nextx, nexty); 
tri.graphics.drawCircle(0, 0, 2); 

с

tri.graphics.lineTo(nextx, nexty); 

Если это не так, пожалуйста, укажите, что именно вы видите, чтобы мы могли иметь лучшее представление о том, что пошло не так.

+0

На данный момент я не вижу _anything_. Есть пара проблем ... одна заключается в том, что изображение не нарисовано там, где я ожидал бы этого. Строки/точки несущественны; его «координаты правильные, что я за ними. В основном я хочу, чтобы якорь (xy) находился посредине треугольника, указывая вверх, как стрелка ... Я изменил код в случае, если это поможет. – jml

+0

OK; Я обновил свой код, см. Выше. Я вижу треугольник, который рисуется, но похоже, что треугольник не полностью заполнен.Я принял ваш совет и использовал lineTo (nextx, nexty), но кажется, что я не начинаю в правильной позиции, когда я вызываю beginFill (0x000000, 0.5). – jml

0

ли есть особая причина, почему вы используете углы для рисования треугольника?

Если бы я сделал это, я бы просто запрограммировал односторонний треугольник с размером единицы (определенный как три 3d точки) один раз, а затем использовал операции масштабирования и перевода, чтобы поместить его в правильный размер и положение.

+0

Одна из причин заключается в том, что я хотел узнать, как это сделать; другой будет то, что теперь у меня есть очки; поэтому я _can_ hardcode это; В конечном счете, может потребоваться, чтобы подобная форма могла трансформироваться между состояниями или быть более универсальной в зависимости от аргументов/свойств. Я вижу вашу мысль, если вы хотите только треугольник. Но ... вы можете масштабировать/переводить/трансформироваться с этим. – jml

Смежные вопросы