Ir para conteúdo
Fórum Script Brasil
  • 0

Desenhar Circulo


§uiciDa£

Pergunta

E ai galera, eu to fazendo um joginho em flash, e nele estou usando um BitMapData pra fazero mapa (até aí td certo), e eu gostaria q o seguinte acontece-se quando um tiro acerta-se o chão, ele retira-se um "espaço" do mapa ...

eu consegui amsi o menos, ficou assim

	for (ii=0; ii<20; ii++) {
  for (i=0; i<20; i++) {
  	mapa.setPixel32((_xmouse+i), (_ymouse+ii), 0x00000000);
  }
	}

mais por esse jeito ele retira uma parte quadrada, e eu gostaria q retira-se uma parte redonda, só q eu não sei o jeito de fazer isso por pixel a pixel,s e alguém souber, plzz me ajude

t+

Link para o comentário
Compartilhar em outros sites

17 respostass a esta questão

Posts Recomendados

  • 0

aew, consegui uma forma:

	for (ii=0; ii<20; ii++) {
  for (i=359; i>=0; i--) {
  	x = (_xmouse-Math.cos(Math.PI*i/180)*ii);
  	y = (_ymouse-Math.sin(Math.PI*i/180)*ii);
  	mapa.setPixel32(x, y, 0x00000000);
  }
	}

mais ela exigee muuuuito do processador, ngm tem um jeitinho mais "leve" ??

t+

Link para o comentário
Compartilhar em outros sites

  • 0

é, mais para o que eu qro fazer crio q essa seja a unica saida =/ ...

ó ve se vc's tem alguma ideia melhor, qro fazer um jogo q tipo, ele tem um campo e os caros de confronto, daí, quando um carro atira e erra...

por exemplo, acerta o chão, o chao destroi, mais o unico jeito q eu sei de fazer isso é pela classe BitMap, e dai eu vo "pintando" de transparente a parte q eu qro 'destruir',...

alguém sabe um jeito melhor ??

t+

Link para o comentário
Compartilhar em outros sites

  • 0

Afff... claro que não velho ¬¬" ...

UHAuHAhuahuaua zueraaaa ^^ ...

ó, to com preguiça de upa ele e te manda, então você coloca o codigo aí, dae você conseuge se vira não é? ;D

faz algum mapa no FW(por exemplo um igual do worms), dae exporta ele pra png, importa este mapa pra biblioteca do flash, e na biblioteca da um linkage nele com o nome "mapa2" ...

dae só você usar este codigo q eu fiz ... a classe CollisionDetectione h uam classe q eu tnho q verifica colisoes em formas não regulares de forma simpelsde se usar , se você quiser depois eu posto ela aki ...

enfim, o codigo ficou +/- assim ...

import flash.display.BitmapData;
import flash.geom.Rectangle;
import com.gskinner.sprites.CollisionDetection;
var map:String = "mapa2";
var mc:MovieClip = this.createEmptyMovieClip("mc1", 0);
var mapa:BitmapData = BitmapData.loadBitmap(map);
mc._y = 0;
mc.attachBitmap(mapa, 0);
mc.onRelease = function() {
	for (i=359; i>=0; i -= 2) {
  for (ii=0; ii<20; ii++) {
  	x = (_xmouse-Math.cos(Math.PI*i/180)*ii);
  	y = (_ymouse-Math.sin(Math.PI*i/180)*ii);
  	mapa.setPixel32(x, y, 0x00000000);
  }
	}
};

t+, boa aprendizagem XD

Link para o comentário
Compartilhar em outros sites

  • 0

huahuauhauhahua

q fodaaaa! ahuauhhua

mas pelo q eu vi ele não fica transparente ne? fica so uma bola preta!

nume masi facil você fazer um MC e da um attach??? o.o

cara.. c não for pedir muitu eu gostaria MUUUUUUITO dessa classe!

eu me lasco todo com colisoes! odeio hittests por causa q já pedri a cabela com essas coisas >.<

por favor, me manda essa classe! -_____________-'

Link para o comentário
Compartilhar em outros sites

  • 0

Não velho, num fika preto não, ele fica transparente, olha la a funçao setpixel32(x, y aarrggbb)

o aa = alpha ...

faz o seguinte, acho que já sei porque não fika transparente ...

aperta f11 e procura ele na biblioteca do flash, daí quando você achar, clica com o botoa direito e em editar com fireworks, daí, muda o fundo dele da cor que estiver para transparemte, e aperta done, daí vai dar certo eu acho...

ah e sobre esse negocio de colisões, realmente é uma *****, sempre uso essa classe ^^, i hate hitTest() xP ...

quando eu chega da escola eu posto ela aki velho ...

t+

Link para o comentário
Compartilhar em outros sites

  • 0

Aeew, demorei porque num achei o site...

eu vo coloca o codigo aki


import flash.display.BitmapData;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Rectangle;

class CollisionDetection {
	static public function checkForCollision(p_clip1:MovieClip,p_clip2:MovieClip,p_alphaTolerance:Number,p_scope:MovieClip):Rectangle {
  
  if (p_alphaTolerance == undefined) { p_alphaTolerance = 255; }
  if (p_scope == undefined) { p_scope = _root; }
  
  var bounds1:Object = p_clip1.getBounds(p_scope);
  var bounds2:Object = p_clip2.getBounds(p_scope);
  
  
  if (((bounds1.xMax < bounds2.xMin) || (bounds2.xMax < bounds1.xMin)) || ((bounds1.yMax < bounds2.yMin) || (bounds2.yMax < bounds1.yMin)) ) {
  	return null;
  }
  
  
  var bounds:Object = {};
  bounds.xMin = Math.max(bounds1.xMin,bounds2.xMin);
  bounds.xMax = Math.min(bounds1.xMax,bounds2.xMax);
  bounds.yMin = Math.max(bounds1.yMin,bounds2.yMin);
  bounds.yMax = Math.min(bounds1.yMax,bounds2.yMax);
  
  
  var img:BitmapData = new BitmapData(bounds.xMax-bounds.xMin,bounds.yMax-bounds.yMin,false);
  
  
  var mat:Matrix = p_clip1.transform.matrix;
  mat.tx = p_clip1._x-bounds.xMin;
  mat.ty = p_clip1._y-bounds.yMin;
  img.draw(p_clip1,mat, new ColorTransform(1,1,1,1,255,-255,-255,p_alphaTolerance));
  
  
  mat = p_clip2.transform.matrix;
  mat.tx = p_clip2._x-bounds.xMin;
  mat.ty = p_clip2._y-bounds.yMin;
  img.draw(p_clip2,mat, new ColorTransform(1,1,1,1,255,255,255,p_alphaTolerance),"difference");
  
  
  var intersection:Rectangle = img.getColorBoundsRect(0xFFFFFFFF,0xFF00FFFF);
  
  
  if (intersection.width == 0) { return null; }
  
  
  intersection.x += bounds.xMin;
  intersection.y += bounds.yMin;
  
  return intersection;
	}


}

só fazer uma classe e chama-la de 'CollisionDetection.as'

dae, pra você usar é só fazer

import CollisionDetection;

e uma funçao pra checar

function checkCol():Void {

var a:Rectangle = CollisionDetection.checkForCollision(mc1, mc2, Number);

if (!a) {

bola._y += 5;

}

}

mc1 e 2 são os movieClip's, o Number ali é o alpha(tipo, eu qro q só detecte colisoa quando o alpha do mc2 for maior 120, dae eu coloco 120 la ^^)...

qlqer duvida posta aew !!

t+

editado .......

agra q eu vi xP

nume masi facil você fazer um MC e da um attach??? o.o

num intendi Oo"

UEUHEUUEHHEUE

Link para o comentário
Compartilhar em outros sites

  • 0

então, só q o negocio de colisdao q eu te passei ele verifica se a colisao com formas não regulares, ou seja, ele verifica se no q ele vai colidir não tem nenhuma cor, ou cor abaixo do alpha especificado, ou seja, não daria pra mim ver se um tiro caise no lugar de um outro tiro, pois iria acertar a mesmo parte da fase, intende =/

t++

Link para o comentário
Compartilhar em outros sites

  • 0

Porque voce não faz em MovieClip com hitTest ? Exige menos do processador. invés de controlar os pixels controle as cordenadas _x e _y. Para controlar o mapa crie MovieClips quadrados para que eles funcionem como quadrantes de area. Mas isso se o jogo for plataformao ou em perpectiva escalonada.

Link para o comentário
Compartilhar em outros sites

  • 0

c pode usar tipo umas mascara! o.o

faz um fundo repartido com varios quadradinhus do tamanho do diametro do circulo ae!

dai sempre q acertar o fundo, q na verdade vai ser um conjunto de quadradinhus.. dai some o quadrado referente a colisao! >.<

sera q deu rpa entender? >.<'

Link para o comentário
Compartilhar em outros sites

  • 0

Opa, deu sim, tipo jogo em tiles num é ...

mais vish aja paciencia em =X ...

tirando q ia ter um for monstruoso pra verificar colisao com os quadradinhos, e acho q faze fikaria meio, "serrilhada" xP ...

a sei lá, eu vo tenta do meu jeito, dae se fikar muuito pesado, eu tento em tiles Senshi ...

vamo ve no que dá ^^...

t+

obs: e a classe conseguiu usa ???

t+

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...