Godoi 0 Denunciar post Postado Agosto 19, 2009 Eai pessoal.. beleza?? tipo.. to criano um aplicativo que vai ter eventos e tal.. pra isso to fazendo esse calendario.. e to recebendo um erro '1061: Call to a possibly undefined method addChild through a reference with static type funcoes:calendario.' e ele me fala que o erro ta na linha destacada no codigo abaixo.. montei isso aqui até agora.. (to andando devagar.. pq não saco quase nada de as3).. //Classe para criação de calendário package funcoes{ import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; import flash.text.Font; import flash.events.MouseEvent; public class calendario{ var meses:Array = new Array("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"); var diasSemana:Array = new Array("Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"); var diasSemanaAb:Array = new Array("D", "S", "T", "Q", "Q", "S", "S"); var diasMes:Array = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); var diasComEvento:Array; var dataAtual:Date; var txtData:String; var mesSelecionado:Date; var diasUsados:Number; var i:uint; var dia_mc:MovieClip; var dias_mc:MovieClip = new MovieClip; var holder:MovieClip = new MovieClip; var calendario_mc:MovieClip = new MovieClip; //Montanto o calendário public function calendario():void{ diasUsados = (mesSelecionado.getFullYear()%4 == 0 && mesSelecionado.getMonth() == 1 ? 29 : diasMes[mesSelecionado.getMonth()]); //montando quantos dias posso usar no mes this.addChild(calendario_mc); ///////////// LINHA DO ERRO!!! ////////////// montaDias(); } //--------------------- //Montando os dias public function montaDias():void{ for (i = 1; i < diasUsados+1; i++) { dia_mc = new MovieClip(); dia_mc.name = "dia"+i; dias_mc.addChild(dia_mc); dia_mc.x = i*25; dia_mc.y = 5; escreveDia(); trace('montaDias'); } calendario_mc.addChild(dias_mc); //---------------- } //Escrevendo o Dia public function escreveDia():void{ txtData = pegaNomeDia(mesSelecionado.getFullYear(), mesSelecionado.getMonth(), i); holder = new MovieClip(); holder.name = i.toString(); dia_mc.addChild(holder); var label_txt:TextField = new TextField(); label_txt.name = txtData+"_txt"; label_txt.autoSize = TextFieldAutoSize.RIGHT; label_txt.embedFonts = true; label_txt.text = txtData; label_txt.selectable = false; label_txt.mouseEnabled = true; var day_tf = new TextFormat(); day_tf.font = "Arial Black"; day_tf.color = 0xFFFFFF; day_tf.size = 13; label_txt.setTextFormat(day_tf); holder.addChild(label_txt); trace('escreveDia'); } //------------------------------- //Função para pegar o nome do dia public function pegaNomeDia(ano:Number,mes:Number,dia:Number):String{ return (diasSemanaAb[new Date(ano, mes, dia).getDay()]); } //------------------------------- } } e tento usa-la assim: var c:calendario = new calendario(); não sei se minha ideia ta certa.. mas o objetivo éra fazer a classe criar um MC.. e nele serem criados os dias do mes.. cada um como um MC novo.. e masi pra frente ter as suas respectivas funções.. Compartilhar este post Link para o post Compartilhar em outros sites
Godoi 0 Denunciar post Postado Agosto 19, 2009 oba pessoal.. beleza?? pois é.. consegui corrigir o erro anterior.. esquecam ele... agora é o seguinte.. dando um trace no meu codigo ele funciona.. cria os dias.. mas os movieclips nao aparecem no stage.. pq?? meu codigo ta assim agora: //Classe para criação de calendário package funcoes{ import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; import flash.text.Font; import flash.events.MouseEvent; public class calendario extends MovieClip{ var meses:Array = new Array("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"); var diasSemana:Array = new Array("Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"); var diasSemanaAb:Array = new Array("D", "S", "T", "Q", "Q", "S", "S"); var diasMes:Array = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); var diasComEvento:Array; var dataAtual:Date; var txtData:String; var mesSelecionado:Date = new Date(); var diasUsados:Number; var i:uint; var dia_mc:MovieClip; var dias_mc:MovieClip = new MovieClip; var holder:MovieClip = new MovieClip; var calendario_mc:MovieClip = new MovieClip; //Montanto o calendário public function calendario(){ diasUsados = (mesSelecionado.getFullYear()%4 == 0 && mesSelecionado.getMonth() == 1 ? 29 : diasMes[mesSelecionado.getMonth()]); //montando quantos dias posso usar no mes montaDias(); this.addChild(calendario_mc); calendario_mc.x = 0; calendario_mc.y = 0; } //--------------------- //Montando os dias public function montaDias(){ for (i = 1; i < diasUsados+1; i++) { dia_mc = new MovieClip(); dia_mc.name = "dia"+i; dias_mc.addChild(dia_mc); dia_mc.x = i*25; dia_mc.y = 0; escreveDia(); } calendario_mc.addChild(dias_mc); dias_mc.x = 0; dias_mc.y = 0; //---------------- } //Escrevendo o Dia public function escreveDia(){ txtData = pegaNomeDia(mesSelecionado.getFullYear(), mesSelecionado.getMonth(), i); holder = new MovieClip(); holder.name = i.toString(); dia_mc.addChild(holder); var label_txt:TextField = new TextField(); label_txt.name = txtData+"_txt"; label_txt.autoSize = TextFieldAutoSize.RIGHT; label_txt.embedFonts = true; label_txt.text = txtData; label_txt.selectable = false; label_txt.mouseEnabled = true; var day_tf = new TextFormat(); day_tf.font = "Arial Black"; day_tf.color = 0xFFFFFF; day_tf.size = 13; label_txt.setTextFormat(day_tf); holder.addChild(label_txt); trace(txtData); } //------------------------------- //Função para pegar o nome do dia public function pegaNomeDia(ano:Number,mes:Number,dia:Number):String{ return (diasSemanaAb[new Date(ano, mes, dia).getDay()]); } //------------------------------- } } vlw.. brigadão povowwww Compartilhar este post Link para o post Compartilhar em outros sites
Godoi 0 Denunciar post Postado Agosto 20, 2009 Aewww.. agora sim.. consegui fazer tudo funcionar... agora povo... quem quiser usar esse codigo ai.. sintam-se a vontade.. um calendariozinho bom.. todo na horizontal..pega automaticamente os dias do mes.. e inclusive anos bisextos... hehe.... ta ai o codigo... //Classe para criação de calendário package funcoes{ import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.AntiAliasType; import flash.text.TextFormat; import flash.text.Font; import flash.events.MouseEvent; import flash.display.Shape; import gs.TweenMax; import gs.easing.*; public class calendario extends MovieClip{ var calendario_mc:MovieClip = new MovieClip; //calendario_mc.addEventListener(MouseEvent.CLICK, teste); var meses:Array = new Array("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"); var diasSemana:Array = new Array("Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"); var diasSemanaAb:Array = new Array("D", "S", "T", "Q", "Q", "S", "S"); var diasMes:Array = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); var diasComEvento:Array; var dataAtual:Date; var txtData:String; var mesSelecionado:Date = new Date(); var diasUsados:Number; var i:uint; var dia_mc:MovieClip; var dias_mc:MovieClip = new MovieClip; var holder:MovieClip = new MovieClip; //Montanto o calendário public function calendario(){ diasUsados = (mesSelecionado.getFullYear()%4 == 0 && mesSelecionado.getMonth() == 1 ? 29 : diasMes[mesSelecionado.getMonth()]); //montando quantos dias posso usar no mes montaDias(); this.addChild(calendario_mc); dias_mc.x = (calendario_mc.width - dias_mc.width)/2; /* */ } //--------------------- //Montando os dias public function montaDias(){ dias_mc.x = 0; for (i = 1; i < diasUsados+1; i++) { dia_mc = new MovieClip(); dia_mc.name = "dia"+i; dia_mc.alpha = .5; dia_mc.buttonMode = true; dia_mc.mouseChildren = false; dia_mc.addEventListener(MouseEvent.MOUSE_OVER, mudaIn); dia_mc.addEventListener(MouseEvent.MOUSE_OUT, mudaOut); dias_mc.addChild(dia_mc); dias_mc.x = 0; dia_mc.x = (i-1)*24.5; dia_mc.y = 0; escreveDia(); } calendario_mc.addChild(dias_mc); //---------------- } //Escrevendo o Dia public function escreveDia(){ txtData = pegaNomeDia(mesSelecionado.getFullYear(), mesSelecionado.getMonth(), i); holder = new MovieClip(); holder.name = i.toString(); dia_mc.addChild(holder); var label_txt:TextField = new TextField(); //CORES E FONTES var cor1:Number = 0xE0E600; var cor2:Number = 0xFFFFFF; var day_tf = new TextFormat(); day_tf.font = "Arial Black"; day_tf.color = cor2; day_tf.size = 9; var num_tf = new TextFormat(); num_tf.font = "Arial Black"; if(i == 15){ num_tf.color = cor1; } else { num_tf.color = cor2; } num_tf.size = 15; //-------------------------- var num_txt:TextField = new TextField(); num_txt.name = txtData+"_num"; num_txt.autoSize = TextFieldAutoSize.CENTER; num_txt.embedFonts = true; num_txt.antiAliasType = AntiAliasType.ADVANCED; num_txt.text = i.toString(); num_txt.selectable = false; num_txt.mouseEnabled = true; num_txt.x = 5; num_txt.y = 15; label_txt.name = txtData+"_txt"; label_txt.autoSize = TextFieldAutoSize.LEFT; label_txt.embedFonts = true; label_txt.antiAliasType = AntiAliasType.ADVANCED; label_txt.text = txtData; label_txt.selectable = false; label_txt.mouseEnabled = true; label_txt.x = num_txt.width/2; label_txt.y = 0; num_txt.setTextFormat(num_tf); label_txt.setTextFormat(day_tf); holder.addChild(label_txt); holder.addChild(num_txt); } //------------------------------- //Função para pegar o nome do dia public function pegaNomeDia(ano:Number,mes:Number,dia:Number):String{ return (diasSemanaAb[new Date(ano, mes, dia).getDay()]); } //------------------------------- public function mudaIn(e:MouseEvent):void{ TweenMax.to(e.currentTarget,.3, {alpha:1}); } public function mudaOut(e:MouseEvent):void{ TweenMax.to(e.currentTarget,1, {alpha:.5}); } } } e pra usar.. é so fazer isso aqui no stage principal... var c:calendario = new calendario(); dias_back.addChild(c); Vou ver se aprendendo (mesmo qeu na marra.. hehe) coloco isso ai como tutorial no meu site.. mas até lah.. quem quiser apontar alguns erros.. ou facilitações.. nesse codigo.. fica aberto ai eim!!! PS: Moderadores.. podem colocar como Resolvido.. Abraço!!! Compartilhar este post Link para o post Compartilhar em outros sites
afra3 0 Denunciar post Postado Setembro 16, 2009 Amigo me desculpe mas sou iniciante em AS. Gostaria que você me explicasse exatamente como usar sua classe por que esta dando erro. Grato!! Compartilhar este post Link para o post Compartilhar em outros sites
Godoi 0 Denunciar post Postado Setembro 16, 2009 Opa Afra3... beleza? cara ajudo sim.. so que preciso que você me fale 2 coisas.. como ta seu codigo e que erro esta dando ok?? Abraços Compartilhar este post Link para o post Compartilhar em outros sites