PDA

Просмотр полной версии : BitmapData + круги


combo
18.01.2007, 23:57
Как на битмапе можно программно рисовать круги ?

etc
18.01.2007, 23:59
Нарисовать круг по старинке, потом загнать в битмап и прилепить там, где нужно, к другому битмапу.

combo
19.01.2007, 00:03
аа.. Только так? я думал, может есть функция какая-нить специальная.

etc
19.01.2007, 00:03
Ну в AS3 есть хотя бы drawEllipse, уже проще.

D12
19.01.2007, 01:31
this.createEmptyMovieClip("circle", 2);
circle.lineStyle(0, 0x000000);
drawCircle(circle, 100, 100, 100);//менеешь одновременно три значения , меняешь диаметр .
function drawCircle(mc:MovieClip, x:Number, y:Number, r:Number):Void {
mc.moveTo(x+r, y);
mc.curveTo(r+x, Math.tan(Math.PI/8)*r+y, Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
mc.curveTo(Math.tan(Math.PI/8)*r+x, r+y, x, r+y);
mc.curveTo(-Math.tan(Math.PI/8)*r+x, r+y, -Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
mc.curveTo(-r+x, Math.tan(Math.PI/8)*r+y, -r+x, y);
mc.curveTo(-r+x, -Math.tan(Math.PI/8)*r+y, -Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
mc.curveTo(-Math.tan(Math.PI/8)*r+x, -r+y, x, -r+y);
mc.curveTo(Math.tan(Math.PI/8)*r+x, -r+y, Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
mc.curveTo(r+x, -Math.tan(Math.PI/8)*r+y, r+x, y);
}
///////////////////////////////////
///////////////////////////////////
///////////////////////////////////
import flash.display.*;
var bmpData:BitmapData = new BitmapData(200, 200, true, 0);//200 это размер битМапа тоесть 200 потаму что у круга радиус 100 соответственно ширина и высота битМапа это диаметр тоесть 2*100=200.
this.createEmptyMovieClip("bmp_circle", 3);
bmp_circle.attachBitmap(bmpData, 1, "auto", true);
bmpData.draw(circle);
circle.removeMovieClip();
//
bmp_circle._x = 175;
bmp_circle._y = 100;

P.S. Рисуй от руки лутше стандартными средствами флеша :away:

iNils
19.01.2007, 11:28
P.S. Рисуй от руки лутше стандартными средствами флеша :away:
import flash.display.BitmapData;
////
function drawCircle (mc:MovieClip, x:Number, y:Number, size:Number) {
mc.lineStyle (size, 0);
mc.moveTo (x, y);
mc.lineTo (x + .15, y);
}
var bmp:BitmapData = new BitmapData (100, 100);
var mc0:MovieClip = this.createEmptyMovieClip ("mc0", 0);
var mc1:MovieClip = this.createEmptyMovieClip ("mc1", 1);
mc1.attachBitmap (bmp, 0);
mc0._visible = false;
drawCircle (mc0, 50, 50, 75);
bmp.draw (mc0);:D

DarkLight
19.01.2007, 13:19
А в 8ом так еще можно рисовать квадратики и ромбики:)

combo
19.01.2007, 13:29
Хитро, но мне подойдет=)
спасибо!

D12
20.01.2007, 02:23
iNils молодец http://woweb.ucoz.ru/flist/sml/516/8.gifпостараюсь запомнить :wacko: =)

etc
20.01.2007, 14:13
Старый прикол, довольно качественный, кстати :)
Жаль, правда, что это всё же линия, а не заливка.

djyamato
18.02.2009, 23:18
import flash.display.BitmapData;
////
function drawCircle (mc:MovieClip, x:Number, y:Number, size:Number) {
mc.lineStyle (size, 0);
mc.moveTo (x, y);
mc.lineTo (x + .15, y);
}
var bmp:BitmapData = new BitmapData (100, 100);
var mc0:MovieClip = this.createEmptyMovieClip ("mc0", 0);
var mc1:MovieClip = this.createEmptyMovieClip ("mc1", 1);
mc1.attachBitmap (bmp, 0);
mc0._visible = false;
drawCircle (mc0, 50, 50, 75);
bmp.draw (mc0);:D


Значит кроме аттача из либы и createEmptyMovieClip способа нарисовать кружок нет.

А если это кисточка которой рисуем.
Проблема в том что если их (кружки) удалять то это надо мувиклип(ы) удалять (инструмент "ластик" например). Или прозрачными делать - неэкономно относительно ресурсов.

Давно на AS3 переходить надо!!! (это я себе)