ovudo 0 Denunciar post Postado Novembro 10, 2010 galera eu to tentando (já a um tempo) escrever um script para criar um quadrado de canto arredondado: function criarQuadArredondado(xis:uint, yis:uint, lar:uint, alt:uint, arre:uint):void { var arred:Sprite = new Sprite(); arred.graphics.lineStyle(3, 0xCCCCCC); arred.graphics.drawRoundRect(0,0,lar,alt,arre); arred.name=("quad"+i); addChild(arred); arred.x=xis; arred.y=yis; } for (var i:uint = 1; i<5; i++) { criarQuadArredondado(350,70,stage.stageWidth-380,30,15); } vejam que cada quadrado recebe um nome "quad+i", preciso que cada quadrado fique abaixo do outro (com o codigo acima todos ficam um encima do outro).dentro do "for" por ex, eu não consigo pegar as propriedades do quad2.x, (dentro do FOR, trace(quad2.x)) porque isso acontece? obrigado a todos Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Novembro 10, 2010 Fiz um exemplo até melhor um pouquinho, criei um tabuleiro 6x6 pra você entender o esquema, e coloquei o nome das instancias tb. var container:Sprite = new Sprite(); stage.addChild(container); for(var i:uint = 0; i < 6; i++){ for(var j:uint=0; j<6; j++){ quad((i * 52 + 120),(j * 52 + 45),20,20,"quad" + i); } } function quad(posX,posY,l,a,nome):void{ var c:Sprite = new Sprite(); c.name = nome; c.graphics.beginFill(0x000000); c.graphics.drawRect(posX,posY,l,a); c.graphics.endFill(); container.addChild(c); trace(c.name); } Abs Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Novembro 11, 2010 Adaptei um exercício com um movie clip na library, mas acho que serve pra dar uma idéia. Veja o exemplo >> http://img844.imageshack.us/img844/1162/fory.jpg Apenas o uso do 'for' causa o empilhamento, é preciso definir a posição do novo objeto adicionado a cada lopp. A solução é um 'for' dentro de outro 'for'. package { import flash.display.MovieClip; public class PlaceMovieDesafio2 extends MovieClip { public function PlaceMovieDesafio2():void { for (var i:int =0; i<4; i++) { for (var j:int =0; j<4; j++) { var mymovie:MyMovie2= new MyMovie2(); addChild(mymovie); mymovie.y = (j *110); } } } } } Se deseja que o objeto não tenha distanciamento com o que se encontra abaixo, fica apenas: mymovie.y = (j *110); Não tenho domínio no uso de objetos dinâmicos, ficou mais fácil para mim testar com este exemplo. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
ovudo 0 Denunciar post Postado Novembro 12, 2010 Fiz um exemplo até melhor um pouquinho, criei um tabuleiro 6x6 pra você entender o esquema, e coloquei o nome das instancias tb. var container:Sprite = new Sprite(); stage.addChild(container); for(var i:uint = 0; i < 6; i++){ for(var j:uint=0; j<6; j++){ quad((i * 52 + 120),(j * 52 + 45),20,20,"quad" + i); } } function quad(posX,posY,l,a,nome):void{ var c:Sprite = new Sprite(); c.name = nome; c.graphics.beginFill(0x000000); c.graphics.drawRect(posX,posY,l,a); c.graphics.endFill(); container.addChild(c); trace(c.name); } Abs ok cara, muito obrigado mesmo, entendi perfeitamente o que eu devo mudar. agora, e se eu quiser pegar o '.x' do quad0 (isso fora do codigo, digamos: var container:Sprite = new Sprite(); stage.addChild(container); for(var i:uint = 0; i < 6; i++){ for(var j:uint=0; j<6; j++){ quad((i * 52 + 120),(j * 52 + 45),20,20,"quad" + i); } } function quad(posX,posY,l,a,nome):void{ var c:Sprite = new Sprite(); c.name = nome; c.graphics.beginFill(0x000000); c.graphics.drawRect(posX,posY,l,a); c.graphics.endFill(); container.addChild©; trace(c.name); } trace(quad0.x) ele da o erro: 1120: Access of undefined property quad0. obrigado pela ajuda Adaptei um exercício com um movie clip na library, mas acho que serve pra dar uma idéia. Veja o exemplo >> http://img844.imageshack.us/img844/1162/fory.jpg Apenas o uso do 'for' causa o empilhamento, é preciso definir a posição do novo objeto adicionado a cada lopp. A solução é um 'for' dentro de outro 'for'. package { import flash.display.MovieClip; public class PlaceMovieDesafio2 extends MovieClip { public function PlaceMovieDesafio2():void { for (var i:int =0; i<4; i++) { for (var j:int =0; j<4; j++) { var mymovie:MyMovie2= new MyMovie2(); addChild(mymovie); mymovie.y = (j *110); } } } } } Se deseja que o objeto não tenha distanciamento com o que se encontra abaixo, fica apenas: mymovie.y = (j *110); Não tenho domínio no uso de objetos dinâmicos, ficou mais fácil para mim testar com este exemplo. Abraços ok cara, entendi perfeitamente como usar o "mymovie.y = (j *110);" muito obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Novembro 12, 2010 É porque o objeto ta sendo criado dentro da function amigão dai o escopo da variavel é local e você ta tentando acessar fora da função. Abs Compartilhar este post Link para o post Compartilhar em outros sites
ovudo 0 Denunciar post Postado Novembro 12, 2010 É porque o objeto ta sendo criado dentro da function amigão dai o escopo da variavel é local e você ta tentando acessar fora da função. Abs e como eu faço para resolver isso? (desculpem tantas duvidas, mas tem 3 anos que eu não programo, e quando eu programava era em AS1) Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Novembro 12, 2010 Voce pode criar um array fora da funcao e adicionar todos os objetos dentro dele, dai você tem como acessar todos eles usando o vetor. Abs http://forum.imasters.com.br/public/style_emoticons/default/grin.gif Compartilhar este post Link para o post Compartilhar em outros sites
ovudo 0 Denunciar post Postado Novembro 12, 2010 Voce pode criar um array fora da funcao e adicionar todos os objetos dentro dele, dai você tem como acessar todos eles usando o vetor. Abs http://forum.imasters.com.br/public/style_emoticons/default/grin.gif Muito obrigado cara, eu nunca iria imaginar que seria tão facil assim, fica ai a dica para alguem mais que tenha a mesma duvida. obrigado vei... valew mesmmo.... var arrai:Array = new Array(); var container:Sprite = new Sprite(); stage.addChild(container); for (var i:uint = 0; i < 6; i++) { for (var j:uint=0; j<6; j++) { quad((i * 52 + 120),(j * 52 + 45),20,20,"quad" + i); } } function quad(posX,posY,l,a,nome):void { var c:Sprite = new Sprite(); c.name=nome; c.graphics.beginFill(0x000000); c.graphics.drawRect(0,0,l,a); c.x=posX; c.y=posY; c.graphics.endFill(); addChild( c ); arrai.push( c ); } for (var d:uint = 0; d < arrai.length; d++) { trace(arrai[d].name +" posY:"+arrai[d].y +" posX:"+arrai[d].x); } obrigado a todos como eu faço para mudar o titulo da mensagem e colocar [resolvido]? rsrsrs sempre sobra alguma duvida! Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Novembro 13, 2010 Vlw camarada. Só nós moderadores que podemos editar o topico e colocar[Resolvido] Abs Compartilhar este post Link para o post Compartilhar em outros sites