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?

Action Script
Started By FlashMaker, 24/01/2008, 23:55
4 replies to this topic
#1
Posted 24/01/2008, 23:55
#2
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 é:
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:
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
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
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
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
WebFórum - Equipe de Flash - Moderador
www.pedropauloalmeida.com.br
Leia as Regras! Colabore com nosso Fórum respeitando as normas de posts e de perfis.
www.pedropauloalmeida.com.br
Leia as Regras! Colabore com nosso Fórum respeitando as normas de posts e de perfis.
#3
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
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
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
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
WebFórum - Equipe de Flash - Moderador
www.pedropauloalmeida.com.br
Leia as Regras! Colabore com nosso Fórum respeitando as normas de posts e de perfis.
www.pedropauloalmeida.com.br
Leia as Regras! Colabore com nosso Fórum respeitando as normas de posts e de perfis.
#5
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
na aplicacao eu do algo do tipo
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]."
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?
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]."

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)