ActionScript2.0: Рисование дуги для угла треугольника

как я могу нарисовать дугу в случайном порядке созданного угла треугольника с помощью flash actionscript 2.0.

Всем спасибо.замещающий текст http://www.freeimagehosting.net/uploads/8289d7feff.png

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


person RedsDevils    schedule 30.03.2010    source источник
comment
Этот вопрос носит субъективный характер, не могли бы вы добавить больше информации (код, изображение того, что вы хотите и т. д.)?   -  person jpabluz    schedule 30.03.2010


Ответы (1)


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

Например, создайте мувиклип в своей библиотеке с именем «круг», содержащий незакрашенный красный кружок с центром в точке вставки клипа (убедитесь, что вы отметили «Экспорт для 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
(источник: webfactional .com)

person Richard Inglis    schedule 30.03.2010
comment
Когда я копирую и тестирую ваш код в моей версии Adobe Flash CS 4 Professional, я не вижу красной дуги. Что это может быть? - person RedsDevils; 31.03.2010
comment
Вам нужно нарисовать символ круга вручную, используя инструмент круга во Flash. Для этого создайте новый символ в своей библиотеке, назовите его «круг», включите «Экспорт для ActionScript» в его свойствах, а затем отредактируйте внешний вид символа, чтобы он был красным кругом (без заливки), возможно, 35 пикселей в диаметре, с центром на точка вставки символа. - person Richard Inglis; 31.03.2010
comment
Вот решение с кругами, управляемыми кодом, если оно вам нужно: stackoverflow.com/questions/2572271 - person Richard Inglis; 09.04.2010