Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Godoi

[Resolvido] criando um calendario

Recommended Posts

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.