losrs 0 Denunciar post Postado Julho 5, 2008 E ai gente boa, O problema é o seguinte tenho o seguinte código para um movie: CODE mc_qualquer.onMouseMove = function() { updateAfterEvent(); }; mc_qualquer.onPress = function() { posxatual = this._x; posyatual = this._y; startDrag(this); }; mc_qualquer.onRelease = function() { if (this.hitTest(mc_principal)) { mc_principal.gotoAndStop(2); intervalo = setInterval(retorno, temp); pontos = ++pontos; this._x = 380; this._y = 550; this.enabled = false; } else { this._x = posxatual; this._y = posyatual; } stopDrag(); }; o código ta num AS separado.O problema é que tenho mais nove movies que terão o mesmo codigo.Como otimizar para que não precise repetir o mesmo código? Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Julho 5, 2008 Creio que seria interessante a criação de uma classe, dai voce teria seus metodos e objetos que poderiam chamar esses metodos. abs Compartilhar este post Link para o post Compartilhar em outros sites
losrs 0 Denunciar post Postado Julho 5, 2008 Creio que seria interessante a criação de uma classe, dai voce teria seus metodos e objetos que poderiam chamar esses metodos. abs Beleza Kisuke, Será que dá para postar um exemplo.Tô começando e classes ainda tão meio nebulosas. Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Julho 5, 2008 Tutorial sobre classes abs^_^ Compartilhar este post Link para o post Compartilhar em outros sites
losrs 0 Denunciar post Postado Julho 5, 2008 Tutorial sobre classes abs^_^ Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
losrs 0 Denunciar post Postado Julho 5, 2008 Eu novamente, seguinte comecei a construção da classe, mas tá dando vários erros referentes as palavras que eu utilizei tipo "posxatual", "posyatual".Dá pra dar uma ajuda? CODE //declara a classe que herda as propriedades e metodos da classe MovieClip class Classe extends MovieClip { public function Classe() { var posxatual:Number; var posyatual:Number; } //reescrevemos o evento onPress private function onPress():Void { //começa o drag this.startDrag(); posxatual = this._x; posyatual = this._y; this.onReleaseOutside = onRelease; } //reescrevemos o evento onRelease private function onRelease():Void { if (this.hitTest(mc_Principal)) { mc_Principal.gotoAndStop(2); pontos = ++pontos; this._x = 380; this._y = 550; this.enabled = false; } else { this._x = posxatual; this._y = posyatual; } this.stopDrag(); } } Compartilhar este post Link para o post Compartilhar em outros sites
losrs 0 Denunciar post Postado Julho 7, 2008 Pessoal a classe da funcioanndo meia boca pois o contador de pontos não tá funcionando o que está errado? CODE class ClasseGame extends MovieClip { var posxatual:Number; var posyatual:Number; var mc_quadrado:MovieClip; var pontos:Number; public function ClasseGame() { _root.pontos = 0; } private function onPress():Void { _root.posxatual = this._x; _root.posyatual = this._y; this.onMouseMove = function():Void { updateAfterEvent(); }; startDrag(this); } private function onRelease():Void { if (this.hitTest(_root.mc_quadrado)) { this._x = 370; this._y = 400; _root.pontos = ++pontos; this.enabled = false; } else { this._x = _root.posxatual; this._y = _root.posyatual; } stopDrag(); delete this.onMouseMove; } } Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Brito 12 Denunciar post Postado Julho 7, 2008 Pessoal a classe da funcioanndo meia boca pois o contador de pontos não tá funcionando o que está errado? CODE class ClasseGame extends MovieClip { var posxatual:Number; var posyatual:Number; var mc_quadrado:MovieClip; var pontos:Number; public function ClasseGame() { _root.pontos = 0; } private function onPress():Void { _root.posxatual = this._x; _root.posyatual = this._y; this.onMouseMove = function():Void { updateAfterEvent(); }; startDrag(this); } private function onRelease():Void { if (this.hitTest(_root.mc_quadrado)) { this._x = 370; this._y = 400; _root.pontos = ++pontos; this.enabled = false; } else { this._x = _root.posxatual; this._y = _root.posyatual; } stopDrag(); delete this.onMouseMove; } } Cada vez que você cria um objeto seu contador zera... e nao vi em nenhum lugar onde ele é incrementado. abs Compartilhar este post Link para o post Compartilhar em outros sites
losrs 0 Denunciar post Postado Julho 7, 2008 Troquei o código no Release e o contador está funcionando: CODE _root.pontos += 1; Preciso agora que quando pressionar o movie ela identifique qual mc foi pressionado e no release compara-se com os nomes dentro de uma array, se fosse um deles se comportaria de uma maneira senão chamaria uma outro metodo. Tentei usar um if dentro do release mas não tá funcionando. Compartilhar este post Link para o post Compartilhar em outros sites
losrs 0 Denunciar post Postado Julho 9, 2008 A classe tá bem melhor porém, tá dando um erro. Coloquei uma função com set interval que faz o movie que foi enviado para o frame 2 retornar ao frame 1.Porém quando arrasto uns 3 movies sobre este mc ele tá retornando quase que instantaneo sem obdecer o tempo do set interval.Alguém pode me explicar porque CODE class ClasseGame extends MovieClip { var posxatual:Number; var posyatual:Number; var mc_quadrado:MovieClip; var pontos:Number; var intervalo:Number; var temp:Number; public function ClasseGame() { _root.pontos = 0; temp = 1500; } private function onPress():Void { _root.posxatual = this._x; _root.posyatual = this._y; this.onMouseMove = function():Void { updateAfterEvent(); }; startDrag(this); } private function onRelease() { if (this.hitTest(_root.mc_quadrado)) { _root.mc_quadrado.gotoAndStop(2); this._x = 370; this._y = 400; _root.pontos += 1; intervalo = setInterval(retorno, temp); this.enabled = false; } else { this._x = _root.posxatual; this._y = _root.posyatual; } stopDrag(); delete this.onMouseMove; } private function retorno() { _root.mc_quadrado.gotoAndStop(1); clearInterval(intervalo); } } Compartilhar este post Link para o post Compartilhar em outros sites
Eder Fortunato 15 Denunciar post Postado Julho 14, 2008 losrs o problema ai é que você esta guardando os valores no _root, e não no objeto, teste deixar assim: this.posxatual = this._x; this.posyatual = this._y; afinal, a variável posxatual foi declarada na classe, evite ao máximo usar _root dentro de uma classe, se não você quebra o encapsulamento dela(quer dizer que ela não "usa" nada do meio externo) quando você precisar mesmo fazer isso, como no caso do "mc_quadrado", crie um método que passe ele como paramento o que você vai suar dentro da classe, declare isso dentro da classe: public function setAlvo(alvo:MovieClip){ mc_quadrado = alvo } feito isso, mude todos os "_root.mc_quadrado" da sua classe e deixe apenas "mc_quadrado" agora no seu arquivo .FLA, você vai dizer ao seu objeto quem será o alvo, faça assim: botao1.setAlvo(_root.quadrado) botao2.setAlvo(_root.quadrado) nesse caso botao1 e 2 são os movieClips que fazem referencia a sua classe, o porque eu fiz isso? agora você pode ter qualquer movieCLip como sendo o alvo para se arrastar em cima, e ele não vai ter que obrigatóriamente se chamar "mc_quadrado", quem esta usando a classe que determina quem será o alvo, bastando para isso chamar o setAlvo() faça essas alterações que você vai ver que ficará mais fácil manipular sua classe, e lembre disso, se a classe precisar usar algo de fora dela, passe como paramentro, tente fazer a mesma coisa com o lugar para onde ela vai quando o hitTEst dá true,(esta um valor fixo de 370 e 400), imagine que você quer trocar esse valor o ideal não é mudar na classe e sim fora dela, assim é melhor passar para classe esse valor bem, ja me alonguei de mais aqui,[:P] faça essas alterações que você vai ver que ficará mais facil manipular sua classe []´s Compartilhar este post Link para o post Compartilhar em outros sites
losrs 0 Denunciar post Postado Julho 14, 2008 Show de bola Eder, valeu a força. Compartilhar este post Link para o post Compartilhar em outros sites