Jump to content


Photo

Action Script


  • Faça o login para participar
4 replies to this topic

#1 FlashMaker

FlashMaker

    Turista

  • Usuários
  • 27 posts
  • Sexo:Não informado

Posted 24/01/2008, 23:55

ola, eu tenho uma duvida quanto aos action script (os ".as")
primeiramente eu gostaria d saber se vale a pena criar um .as para guardar classes, fica mais organizado eu acho
ano passado no flash mx 2004 eu criei um programa q importava a classe Mira de um .as, tava funcionando normal, mas esse ano eu instalei o flash 8 e resolvi retomar o programa, mas qnd eu mexi no .as reparei q nao acontecendo o q deveria.. eu tentei varias coisa ate colokei em comentarios uma funcao e ela continuou funcionando!! qnd eu tiro a funcao o programa da erro.. sera q mudou algo importante quanto ao uso do .as?

#2 Pedropauloalmeida

Pedropauloalmeida

    Fale ao motorista somente o indispensável

  • Usuários
  • 1376 posts
  • Sexo:Masculino
  • Localidade:Santo André SP

Posted 26/01/2008, 17:07

Bom.

Primeiro de tudo: vc sabe se esse .as é uma Classe ou é um "include" ?

Veja bem: se vc tem uma classe, o path do flash pode estar desconfigurado. Se for isso (e se vc sabe exatamente o que está fazendo) já deve saber que basta vc ir em Edit >> Preferences >> Action Script >> Action Script 2.0 Settings e modificar o path global das classes.

Agora. Se vc não sabe se é uma classe ou um include, então vc está numa pequena encrenca...
Se vc não sabe, verifique no seu código se vc utiliza "#include 'meuScript.as' " ou se vc está fazendo um import class.MinhaClasse.
Se for import, resolva com o global path. Se não for import, verifique o caminho do seu include.

Vc falou sobre as vantagens de se desenvolver tudo em .as. Aí entra o segredo da coisa: desenvolver em .as externo e dar um "include" é bobagem. Não adianta nada. Não traz vantagem nenhuma. Agora, fazer as coisas em Classes, aí é outra stória.

Para vc ter idéia, o único código que digito nas minhas aplicações 2.0 dentro do flash é:

var main:MainSite = new MainSite();

Com apenas uma linha no .fla eu instancio uma classe "MainSite" que vai me dar um OBJETO MainSite que vai controlar e executar todas as outras classes que funcionam dentro do flash.
Um projeto 100% OOP permite um rápido desenvolvimento pois tudo o que vc precisa está armazenado em uma biblioteca de scripts. Não me lembro mais a última vez que programei um scroll ou um menu. Já tenho as classes de Scroll e Menu prontas. Simplesmente faço dentro da minha classe Main:

var menu:Menu = new Menu();

E pronto. Já tenho um menu funcionando. Depois uso os métodos desse "menu" para adicionar botões e saber quando o botão for clicado. Dentro da clase Menu tenho objetos "Botoao" e, por conseguinte, tenho

var botao:Botao = new Botao();

Então tenho tudo separado. Se o cliente pedir "Olha, dá pra trocar a cor do botão ?". Eu vou mecher apenas no método setRGB da classe Botao.as. Isso me dá flexibilidade, agilidade de desenvolvimento e um re-uso de código muito grande. Esses dias desenvolvi uma classe que controla o menu contextual do flash. Agora simplesmente instancio e adiciono os ítens que quero já com a função de retorno, etc.

Uma vez desenvolvida, fica simples como

var context:MenuContextual = new MenuContextual();
context.adiconarBotao("Desenvolvido por", false, false, true);

E pronto! Já tenho um menu contextual do flash funcioando! Todas as vezes que eu precisar, basta usar essas três linhas e ter meu menu funcionando. Não mexo mais na classe. Ela está pronta e pode ser re-usada infinitas vezes.

Desculpe o longo post. Acabei fugindo um pouco do assunto, mas fica aqui minha dica a todos para que estudem OOP para flash.


Abraços.

pp

#3 FlashMaker

FlashMaker

    Turista

  • Usuários
  • 27 posts
  • Sexo:Não informado

Posted 27/01/2008, 15:10

humm eh uma classe pq no Mira.as tem "class Mira{" e no flash tem "import Mira"
eu ate fui edit>>preferences>>actionscript e tal, mas eu n sei o q fazer hehe
o q me deixa bolado eh q no 2004 eu consigo fazer tudo direito, ja no 8 n ta funcionando o q eu modifico..
a proposito, a minha classe comanda um movie clip, pra isso eu tenho por exemplo uma variavel na classe chamada meuMC = "quadrado". Para fazer o mc andar eu ponho na classe _root[meuMc]._x+=10. Essa eh uma boa forma de se fazer ou existe uma forma melhor?
obrigado pela ajuda

#4 Pedropauloalmeida

Pedropauloalmeida

    Fale ao motorista somente o indispensável

  • Usuários
  • 1376 posts
  • Sexo:Masculino
  • Localidade:Santo André SP

Posted 29/01/2008, 10:26

Existe sim, mas aí vai implicar em várias coisas.

Vc terá que fazer com que o movieClip seja instanciando direto na biblioteca. E a classe terá que ser um extend da classe MovieClip.

Vc pode postar a classe pra gente dar uma olhada ?


Abraços.

pp

#5 FlashMaker

FlashMaker

    Turista

  • Usuários
  • 27 posts
  • Sexo:Não informado

Posted 29/01/2008, 18:40

eh a maior classe do jogo q eu to fazendo, por isso eu to trazendo soh a funcao principal modificada
ela controla o mc dos monstros q andam pela tela

class Monstro{
	public var x,y,hp,ataque,i,pontos,velocidade:Number;
	public var tipo,mc,direcao:String;
	public var vivo:Boolean;
	public function Monstro(xpos,ypos){
		x=xpos;		y=ypos;
		direcao="esquerda";				//direcao p/ andar
		i=_root.n_monstro;				//numero do monstro
		_root.n_monstro++;				//p/ n criar 2 monstros com mesmo numero
		mc="monstro_mc"+i;				//mc controlado pela classe
		duplicateMovieClip(_root.monstro_mc,mc,ypos*_root.largura+xpos);
		_root[mc].nome="monstro"+i;			//p/ o mc saber kem esta controlando
		_root[mc].tipo=tipo;
		_root.mapa[x][y]="monstro"+i;		//posicao no mapa
		aplica_posicao(x,y);
	}
}

na aplicacao eu do algo do tipo
_root["monstro"+_root.n_monstro]=new Monstro(x,y);

soh q no mc tem varias acoes em frame, dai pra eu ter acesso às variaveis da classe, eu guardo o nome no proprio mc, e dentro dele eu do por exemplo _root[nome].direcao
por isso a duvida se era a melhor maneira, vai q existe uma forma d chegar no mc e nao precisar ficar dando esse "_root[nome]." :P
agora como assim, instanciar direto na biblioteca? o.O eu achava q tudo q eh instanciado tem q ir pra aplicacao uai. tem q mexer nakele tal d component definition?




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq