2010-03-30 3 views
0

Как рисовать дугу в случайном порядке, создавая угол треугольника со вспышкой actioncript 2.0.ActionScript2.0: Рисование дуги для угла треугольника

Спасибо всем. alt text http://www.freeimagehosting.net/uploads/8289d7feff.png

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

+0

Этот вопрос является своего рода субъективным, пожалуйста, вы можете добавить дополнительную информацию (код, картина того, что вы хотите, и т.д.?) – jpabluz

ответ

1

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

Например, сделайте клип MovieClip в своей библиотеке с именем «круг», содержащий незаполненный красный круг с центром в точке вставки клипа (убедитесь, что вы отметили «Экспорт для Actionscript» в его свойствах).

Затем вы можете нарисовать свой треугольник что-то вроде этого:

import flash.geom.Point; 

function randomPoint():Point { //return a random point on the stage 
    var p:Point = new Point(Math.floor(Math.random()*Stage.width), Math.floor(Math.random()*Stage.height)); 
    return p; 
} 

function drawTriangle(mc:MovieClip, q1:Point, q2:Point, q3:Point):Void {//draw a triangle through 3 points 
    var stroke=2;//line weight of triangle 
    mc.lineStyle(stroke, 0x000000, 100, true, "none", "round", "round"); 
    mc.moveTo(q1.x, q1.y); 
    mc.lineTo(q2.x, q2.y); 
    mc.lineTo(q3.x, q3.y); 
    mc.lineTo(q1.x, q1.y); 
} 

function arcTriangle():MovieClip { //main function to draw a triangle with corner arcs 
    //make a new movieclip t which will hold our triangle parts 
    var depth=this.getNextHighestDepth(); 
    var t:MovieClip = this.createEmptyMovieClip("t"+depth, depth); 

    //define 3 random points (stored as properties of t) 
    t.p1=randomPoint(); 
    t.p2=randomPoint(); 
    t.p3=randomPoint(); 

    //draw a triangle 
    t.createEmptyMovieClip("triangle", 0); 
    drawTriangle(t.triangle, t.p1, t.p2, t.p3); 

    //draw a filled triangle to use as a mask 
    t.createEmptyMovieClip("mask", 1); 
    t.mask.beginFill(0xF0F0F0); 
    drawTriangle(t.mask, t.p1, t.p2, t.p3); 
    t.mask.endFill(); 
    t.mask._alpha=0; 

    //add a red circle to each corner 
    t.createEmptyMovieClip("arcHolder", 2); 
    t.arcHolder.attachMovie("circle", "arc1",1,{_x:t.p1.x, _y:t.p1.y}); 
    t.arcHolder.attachMovie("circle", "arc2",2,{_x:t.p2.x, _y:t.p2.y}); 
    t.arcHolder.attachMovie("circle", "arc3",3,{_x:t.p3.x, _y:t.p3.y}); 

    //mask the circles so only the interior arcs are visible 
    t.arcHolder.setMask(t.mask); 

    return t; 
} 

var myTriangle:MovieClip = arcTriangle(); 

et voila http://roi.webfactional.com/img/so/triangle.jpg

+0

Когда я копирую и тестирую код в своей версии Adobe Flash CS 4 Professional, я не вижу красной дуги. Что это может быть? – RedsDevils

+0

Вам нужно нарисовать символ «круг» вручную, используя инструмент круга во Flash. Для этого создайте новый символ в своей библиотеке, назовите его «круг», включите «Export for Actionscript» в его свойствах, а затем отредактируйте внешний вид символа как красный круг (без заполнения), возможно, 35 пикселей в диаметре, с центром в точке ввода символа. –

+0

Вот решение с круговыми кодами, если вам это нужно: http://stackoverflow.com/questions/2572271 –

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