• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

seltix

ActionScript default functions library

6 mensagens neste tópico

viva a todos,

estou a criar um ficheiro flash com actionscript 3 onde tudo é feito e controlado a partir do actionscript, estou a trabalhar a partir dum codigo gratuito que obtive na internet. nao sou muito experiente com actionscript mas pelo que percebi atravez do codigo base que obtive, as funcoes que pretendemos utilizar devem ser importadas...

o que pretendia adicionar era uma funcao para poder fazer uma pausa no timeline :

      function timelinePause(sec) {
         stop();
         
         var timelinePause:Timer = new Timer(sec * 1000, 1);
         timelinePause.addEventListener(TimerEvent.TIMER, timelinePauseHandler);
         timelinePause.start();
      }

      function timelinePauseHandler(evt:Object):void {
         play();
      }

já encontrei a biblioteca para o TimerEvent :

               import flash.events.TimerEvent;

mas nao consigo encontrar para o stop() e o play(), dá a msm mensagem de erro que dava no TimerEvent antes de importar a respectiva biblioteca:

              1180: Call to a possibly undefined method stop.
              1180: Call to a possibly undefined method play.

como posso solucionar este problema? já tentei procurar na net uma lista das funcoes do actionscript mas nao encontro...

obrigado a todos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

play() e stop() são métodos da classe MovieClip por isso a classe onde tens esse código tem de ser MovieClip ou herdar.

Se esse código estiver na timeline, esse erro não acontece.

Se tens esse código na classe de entrada (Document Class) provavelmente está a estender outro objecto visual que não o MovieClip ou descendentes, Sprite por exemplo (que não tem timeline).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

play() e stop() são métodos da classe MovieClip por isso a classe onde tens esse código tem de ser MovieClip ou herdar.

Se esse código estiver na timeline, esse erro não acontece.

Se tens esse código na classe de entrada (Document Class) provavelmente está a estender outro objecto visual que não o MovieClip ou descendentes, Sprite por exemplo (que não tem timeline).

pois mas nao pode ser na timeline.

o codigo é para criar um dado vectorial e faze-lo rodar e é tudo feito com actionscript, e como quero fazer uma pausa depois de ele rodar tem de ser no codigo e nao na timeline.

nao detecta a classe movieclip nem herdar :S

o codigo é so seguinte :

package {
   import caurina.transitions.Tweener;
   import five3D.display.Graphics3D;
   import five3D.display.Scene3D;
   import five3D.display.Shape3D;
   import five3D.display.Sprite3D;
   import five3D.geom.Matrix3D;
   import five3D.geom.Point3D;
   import flash.display.BlendMode;
   import flash.display.Sprite;
   import flash.events.Event;
   import flash.events.MouseEvent;
   import flash.geom.Point;
   import flash.net.navigateToURL;
   import flash.net.URLRequest;
   import flash.utils.Timer;
   import flash.events.TimerEvent;

   
   /**
    * ...
    * @author Edgars Simsons, [url]http://edzis.wordpress.com[/url], simsons.edgars{in}gmail.com
    */
   public class DiceExample extends Sprite {
      private var dice:Dice;
      
      public function DiceExample():void {
         if (stage) init();
         else addEventListener(Event.ADDED_TO_STAGE, init);
      }
      
      private function init(e:Event = null):void {
         removeEventListener(Event.ADDED_TO_STAGE, init);
         // entry point
         
         
         dice = new Dice();
         dice.addEventListener(Dice.SCORE, onDiceScore);
         addChild(dice);
         

         timelinePause(2);
         
         dice.roll(); //RODAR O DADO 1 VEZ AUTOMATICAMENTE AO INICIO
         //stage.addEventListener(MouseEvent.CLICK, roll); //RODAR O DADO A CADA CLIQUE
         
         timelinePause(16);
         
         navigateToURL(new URLRequest('javascript:faf_Combate_GuardarDados(339, ' + dice.score + ');'), '');
         
         
         stage.addEventListener(Event.RESIZE, onResize);
         onResize();
      }
      
      private function onResize(e:Event = null):void {
         dice.x = stage.stageWidth / 2;
         dice.y = stage.stageHeight / 2;
      }
      
      private function roll(e:MouseEvent):void {
         dice.roll();
      }
      
      private function onDiceScore(e:Event):void {
         trace("RESULTADO : " + dice.score);
      }
      
      function timelinePause(sec) {
         //stop();
         
         var timelinePause:Timer = new Timer(sec * 1000, 1); //Timer(1000, 1) : 2000 = 1,000 milliseconds, or 1 seconds, 1 = only wait for it once.
         timelinePause.addEventListener(TimerEvent.TIMER, timelinePauseHandler);
         timelinePause.start();
      }

      function timelinePauseHandler(evt:Object):void {
         //play();
      }
      
   }
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se tens esse código na classe de entrada (Document Class) provavelmente está a estender outro objecto visual que não o MovieClip ou descendentes, Sprite por exemplo (que não tem timeline).

Por isso é que escrevi duas frases. :)

public class DiceExample extends Sprite

Sprite não tem timeline, tens de estender MovieClip, a definição total é flash.display.MovieClip

Aconselho a usares um editor externo (e.g. FlashDevelop) que automatiza os imports à medida que utilizas as classes no código.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois desculpa, nao percebo muito de actionscript...

ja alterei para "public class DiceExample extends MovieClip" mas nao está a fazer a pausa... podes ajudar?

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já agora... estou a utilizar o flashdevelop como recomendaste, no entanto necessito de abrir a mesma o adobe flash para compilar... nao existe uma alternativa para isso? é que o flash ide é muito pesado e ter de abrir os dois...

obrigado =)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora