franksniper 0 Denunciar post Postado Agosto 26, 2010 Fala ae galera beleza? estou com uma duvida aki, alguem poderia me ajudar? Estou achando que meu código está muito repetitivo, alguem me de uma luz para enxutar? Sou um pouco novo no AS3. Estou trazendo os MC da libray. var bt_gestao:Gestao = new Gestao(); var bt_negocio:Negocio = new Negocio(); var bt_apoio:Apoio = new Apoio(); var box_organizacao:BoxOrganizacao = new BoxOrganizacao(); var box_reputacao:BoxReputacao = new BoxReputacao(); var box_suporte:BoxSuporte = new BoxSuporte(); addChild(bt_gestao); addChild(bt_negocio); addChild(bt_apoio); addChild(box_organizacao); addChild(box_reputacao); addChild(box_suporte); tem como eu diminuir? botar em uma array sei la? mesma coisa para esse, como a posição X são iguais gostaria de enxutar tbm! bt_gestao.x = 48; bt_gestao.y = 208; bt_negocio.x = 48; bt_negocio.y = 436; bt_apoio.x = 48; bt_apoio.y = 634; box_organizacao.x = 461; box_organizacao.y = 208; box_reputacao.x = 461; box_reputacao.y = 436; box_suporte.x = 461; box_suporte.y = 634; } Compartilhar este post Link para o post Compartilhar em outros sites
Irineu Antunes 2 Denunciar post Postado Agosto 26, 2010 Fala ae galera beleza? estou com uma duvida aki, alguem poderia me ajudar? Estou achando que meu código está muito repetitivo, alguem me de uma luz para enxutar? Sou um pouco novo no AS3. Estou trazendo os MC da libray. var bt_gestao:Gestao = new Gestao(); var bt_negocio:Negocio = new Negocio(); var bt_apoio:Apoio = new Apoio(); var box_organizacao:BoxOrganizacao = new BoxOrganizacao(); var box_reputacao:BoxReputacao = new BoxReputacao(); var box_suporte:BoxSuporte = new BoxSuporte(); addChild(bt_gestao); addChild(bt_negocio); addChild(bt_apoio); addChild(box_organizacao); addChild(box_reputacao); addChild(box_suporte); tem como eu diminuir? botar em uma array sei la? mesma coisa para esse, como a posição X são iguais gostaria de enxutar tbm! bt_gestao.x = 48; bt_gestao.y = 208; bt_negocio.x = 48; bt_negocio.y = 436; bt_apoio.x = 48; bt_apoio.y = 634; box_organizacao.x = 461; box_organizacao.y = 208; box_reputacao.x = 461; box_reputacao.y = 436; box_suporte.x = 461; box_suporte.y = 634; } Sobre os addChilds, você pode criar um método que recebe uma sobrecarga de objetos, e nele um laço pra add cada objeto: function batchChildren(objs:Object...) // com estes tres pontos ele vai receber quandos objetos forem necessários e enviar p/ uma array { for(i:int =0; i<objs.length;i++) { addChild(objs[i]); } } Se você puder deixar seus objetos sob uma classe abstrata pra se tornar mais restritivo os tipos de parâmetros, é muito melhor! Ai você usa desta forma: batchChildren(bt_gestao,bt_negocio,bt_apoio,box_organizacao,box_reputacao,box_suporte); Quanto aos posicionamentos não tem jeito, tem que ser na mão... PS: você ainda poderia implementar o posicionamento encapsulado: var obx:Object = {$x:100, $y:200, $myObj:bt_gestao}; //[...] batchChildren(obx); //[...]; function batchChildren(objs:Object...) // com estes tres pontos ele vai receber quandos objetos forem necessários e enviar p/ uma array { for(i:int =0; i<objs.length;i++) { addChild(objs[i].$myObj); objs[i].myObj.x = objs[i].$x; objs[i].myObj.y = objs[i].$y; } } No lugar do obx (Object), você poderia fazer um objeto container e instanciar-lo assim: var box_suporte:objContainer = new (new BoxSuporte(),100,100);//obj,x,y var box_suporte2:objContainer = new (new BoxSuporte(),100,200); batchChildren(box_suporte,box_suporte2); Compartilhar este post Link para o post Compartilhar em outros sites
franksniper 0 Denunciar post Postado Agosto 26, 2010 Não entendi muito não! como ficaria isso? assim: function batchChildren(objs:Object...) { var bt_gestao:Gestao = new Gestao(); var bt_negocio:Negocio = new Negocio(); var bt_apoio:Apoio = new Apoio(); var box_organizacao:BoxOrganizacao = new BoxOrganizacao(); var box_reputacao:BoxReputacao = new BoxReputacao(); var box_suporte:BoxSuporte = new BoxSuporte(); for(i:int =0; i<objs.length;i++) { addChild(objs); } } seria isso? obrigado pela ajuda! Compartilhar este post Link para o post Compartilhar em outros sites
Irineu Antunes 2 Denunciar post Postado Agosto 26, 2010 assim: function instanciaObjetos() { var bt_gestao:Gestao = new Gestao(); var bt_negocio:Negocio = new Negocio(); var bt_apoio:Apoio = new Apoio(); var box_organizacao:BoxOrganizacao = new BoxOrganizacao(); var box_reputacao:BoxReputacao = new BoxReputacao(); var box_suporte:BoxSuporte = new BoxSuporte(); batchChildren(bt_gestao, bt_negocio, bt_apoio, box_organizacao, box_reputacao, box_suporte); } function batchChildren(objs:Object...) { for(i:int =0; i<objs.length;i++) { addChild(objs[i]); } } =======================Cod ultra enxuto: para incluir posicionamento em apenas 1 objeto, crie uma classe abstrata ou pai(por ex: Setores) e herde seus objetos (box e bt no caso) dela, depois crie outra classe chamada: setoresContainer e insira estas variaveis: $x:int; $y:int; $MyObj:Setores; no seu construtor receba os parametros respectivos e dê um set deles para estas variáveis. public setoresContainer($MyObj:Setores,$x:int, $y:int) { this.$x = $x; this.$y = $y; this.$MyObj = $MyObj; } Depois ao invés de fazer assim: var bt_gestao:Gestao = new Gestao(); faça assim: var bt_gestao:setoresContainer = new setoresContainer(new Gestao(),100,100); var box_suporte:setoresContainer = new setoresContainer(new BoxSuporte(),100,100); batchChildren(bt_gestao, box_suporte); function batchChildren(objs:setoresContainer...) // com estes tres pontos ele vai receber quandos objetos forem necessários e enviar p/ uma array { for(i:int =0; i<objs.length;i++) { addChild(objs[i].$myObj); objs[i].myObj.x = objs[i].$x; objs[i].myObj.y = objs[i].$y; } } Compartilhar este post Link para o post Compartilhar em outros sites
franksniper 0 Denunciar post Postado Agosto 26, 2010 da erro nas seguintes linhas: 68, 69 1084: Syntax error: expecting rightparen before tripledot 1084: Syntax error: expecting in before colon 1084: Syntax error: expecting rightparen before tripledot function batchChildren(objs:Object...){ for(i:int =0; i<objs.length;i++){ Compartilhar este post Link para o post Compartilhar em outros sites
Irineu Antunes 2 Denunciar post Postado Agosto 26, 2010 da erro nas seguintes linhas: 68, 69 1084: Syntax error: expecting rightparen before tripledot 1084: Syntax error: expecting in before colon 1084: Syntax error: expecting rightparen before tripledot function batchChildren(objs:Object...){ for(i:int =0; i<objs.length;i++){ Perdão, confundi com java: batchChildren(...objs:Array) Um exemplo prático: package { import flash.display.Sprite; /** * @author irineu */ public class Main extends Sprite { public function Main() { teste("1","Good","Hello"); } private function teste(...objs:Array) : void { for (var i : int = 0; i < objs.length; i++) { trace(objs[i]); } } } } Compartilhar este post Link para o post Compartilhar em outros sites
franksniper 0 Denunciar post Postado Agosto 26, 2010 Continua o mesmo erro no FOR! =/ Consegui, botei de outra forma! var buttons:Array = new Array(bt_gestao, bt_negocio, bt_apoio, box_organizacao, box_reputacao, box_suporte); for(var i = 0; i < buttons.length; i++){ addChild(buttons); } obrigadoo! Compartilhar este post Link para o post Compartilhar em outros sites
Irineu Antunes 2 Denunciar post Postado Agosto 27, 2010 ;) talvez seja a verão do Flash player, mas qualquer coisa checke a documentaçao: http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=03_Language_and_Syntax_160_19.html Compartilhar este post Link para o post Compartilhar em outros sites