Ir para conteúdo

Arquivado

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

Project2015

Converter código em AS1 para AS3

Recommended Posts

Necessito modificar esse código feito em 2008 com Flash MX e AS1 para o Flash Professional 2015 com AS3, porém, não tenho conhecimento de orientação a objetos e AS3. Esse código abre arquivos swf externos para um palco principal em um movieclip e aparece o progresso dos frames em tempo (00:00/00:00) tempo decorrido/tempo total bem como uma barra de progresso. Não estou conseguindo fazer funcionar a barra de progresso e nem o tempo. Já andei lendo sobre a função timer, UILoader, Loader, porém não consegui aplicar nesse código em questão:

_global.dados = 1;

var loadingCall:Number = setInterval(preloadSite, 250);
var loadingCalls:Number = setInterval(times, 1000);

bt_avancar.onPress = function() {
		if (dados<7) {
		dados++;
		informar(dados);
	}
};

bt_voltar.onPress = function() {
	if (dados>1) {
		dados--;
		informar(dados);
	}
};

	if (dados>7) {
		dados = 0;
	}

	function preloadSite() {
	if (dados < 2) {
	progressbar._width = 0 }
	else {
	loaded = Math.round(_root.mclip._currentframe);
	total = Math.round(_root.mclip._totalframes);
	percent = loaded/total
	progressbar._width = percent*487;
	if (loaded >= total) {
		clearInterval(loadingcall);
		} 
	if (loaded <= 1) {
		progressbar._width = 0
	}
		}
	}
	
	function times () {
		minutesElap = Math.floor((_root.mclip._currentframe)/12/60);
		secondsElap = Math.floor((_root.mclip._currentframe/12)-(minutesElap*60));
		minutesTot = Math.floor((_root.mclip._totalframes)/12/60);
		secondsTot = Math.floor((_root.mclip._totalframes/12)-(minutesTot*60));

	if (secondsTot <> 0) {
		contagem.text = (minutesElap < 10 ? "0" + minutesElap : minutesElap) + ":" + (secondsElap < 10 ? "0" + secondsElap : secondsElap) + "/" + (minutesTot < 10 ? "0" + minutesTot : minutesTot) + ":" + (secondsTot < 10 ? "0" + secondsTot : secondsTot);
		}
	else {
		contagem.text = ""
	}
	}

	bt_sair.onRelease = function () {
		fscommand("quit");
	}

	function informar () {
	switch (dados) {
	case 2:
		mclip.loadMovie("cap01.swf");
		break;
	case 3:
		mclip.loadMovie("cap02.swf");
		break;
	case 4:
		mclip.loadMovie("cap03.swf");
		break;
	default:
		mclip.unloadMovie();
		contagem.text = "";
}
	}

:rolleyes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

O mais próximo que consegui chegar foi de carregar o swf externo e do totalFrames trazer o resultado esperado, porém, o contador de tempo fica parado (00:00/07:25). De acordo com o passar dos frames ele deveria ir progredindo (ex: 01:12/07:25).

Segue o código (desculpem não ter nenhuma noção de orientação a objeto aqui):

import flash.display.MovieClip
import flash.display.Loader

var loader: Loader = new Loader();
var swfExterno: Object = new Object();

loader.load(new URLRequest("cap01.swf"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, carregou);

function carregou(event: Event): void {
	addChild(loader);
	loader.x = 0;
	loader.y = 77;
	swfExterno = event.target.content;
	var minutesElap: Number = 0;
	var secondsElap: Number = 0;
	var minutesTot: Number = 0;
	var secondsTot: Number = 0;
	var totFrames = this.swfExterno.totalFrames;
	var curFrame = this.swfExterno.currentFrame;

	var myTimer: Timer = new Timer(1000, 0);
	myTimer.addEventListener("timer", timerHandler);
	myTimer.start();

	function timerHandler(event: TimerEvent) {
		minutesElap = Math.floor((curFrame) / 12 / 60);
		secondsElap = Math.floor((curFrame / 12) - (minutesElap * 60));
		minutesTot = Math.floor((totFrames) / 12 / 60);
		secondsTot = Math.floor((totFrames / 12) - (minutesTot * 60));

		if (secondsTot > 0) {
			contagem.text = (minutesElap < 10 ? "0" + minutesElap : minutesElap) + ":" + (secondsElap < 10 ? "0" + secondsElap : secondsElap) + "/" + (minutesTot < 10 ? "0" + minutesTot : minutesTot) + ":" + (secondsTot < 10 ? "0" + secondsTot : secondsTot);
		} else {
			contagem.text = "";
		}
	}
}

Desde já agradeço a atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui fazer com que o tempo acompanhe a duração do swf externo, porém, o único problema é que, a cada troca de cena do swf externo, o contador reinicia novamente. Preciso que seja contínuo até o final do arquivo swf. Alguém tem alguma sugestão?

var swfLoader:Loader = new Loader();
var swfFile:URLRequest = new URLRequest("cap01.swf");
var currentSWF:MovieClip = new MovieClip();

swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoadedHandler);

function swfLoadedHandler(e:Event):void {
currentSWF = MovieClip(swfLoader.content);    	
currentSWF.addEventListener(Event.ENTER_FRAME , contador);
}

function contador(e:Event):void {	
	var minutesElap:int;
	var secondsElap:int;
	var minutesTot:int;
	var secondsTot:int;
	var totFrames:int = currentSWF.totalFrames;
	var curFrame:int = currentSWF.currentFrame;

	minutesElap = Math.floor((curFrame)/12/60);
	secondsElap = Math.floor((curFrame/12)-(minutesElap*60));
	minutesTot = Math.floor((totFrames)/12/60);
	secondsTot = Math.floor((totFrames/12)-(minutesTot*60));

	contagem.text = (minutesElap < 10 ? "0" + minutesElap : minutesElap) + ":" + (secondsElap < 10 ? "0" + secondsElap : secondsElap) + "/" + (minutesTot < 10 ? "0" + minutesTot : minutesTot) + ":" + (secondsTot < 10 ? "0" + secondsTot : secondsTot);
      }
	  
swfLoader.load(swfFile);
addChild(swfLoader);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lendo o help da Adobe descobri que: "se o clipe de filme tiver várias cenas, esse valor será o número do quadro na cena atual", então, em cada nova cena, ele reiniciava o currentFrame como 1. Bastou criar uma variável que guardasse o valor dos frames da cena anterior e somasse com os frames da nova cena.

Segue o código para auxiliar quem também está tendo essa dificuldade:

//Variáveis necessárias:

var cenanome:Scene;

var num_frames:int = 0;

var curFrame:int = 0;

//Após carregado o swf externo:
cenanome = mclip.currentScene;
var cenanome2:Scene = mclip.currentScene;

//condição:	
if (cenanome.name != cenanome2.name) {
		
num_frames = curFrame;
		
cenanome = cenanome2;
	
}
	
//Somo o valor dos frames da cena anterior com a atual na função enterframes:
curFrame = num_frames + mclip.currentFrame;

Obrigado a todos que leram meu código e, de alguma forma, analisaram para tentar me auxiliar na resolução desse problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Alvaro_php
      Pessoal boa noite
      Tenho um sistema em Visual Basic 6 que utiliza um documento do Word que é enviado para as empresas, onde tenho algumas flags que são utilizadas para colocar no nome da empresa e endereço e que são enviadas via email

      Estou conseguindo converter esse documento do WORD em PDF sem problemas
      Private Sub ConverterWordParaPDF()

          On Error GoTo TrataErro
          Dim ObjWord2 As Word.Application
          Dim ObjWordDoc2 As Word.Document
          
          Set ObjWord2 = CreateObject('Word.Application')
          ObjWord2.Visible = False
          ObjWord2.DisplayAlerts = wdAlertsNone

          Set ObjWordDoc2 = ObjWord2.Documents.Open(App.Path + '\Documento.doc', True, True, False, Replace(Replace(Replace(Replace(Rs(1), '/', ''), '-', ''), '.', ''), '_', ''))

          ObjWordDoc2.ExportAsFixedFormat OutputFileName:= _
          App.Path + '\Documento.pdf', ExportFormat:=wdExportFormatPDF, _
          OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, Range:= _
          wdExportAllDocument, from:=1, To:=1, Item:=wdExportDocumentContent, _
          IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:= _
          wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:= _
          True, UseISO19005_1:=False
              
          ObjWord2.Visible = False
          ObjWord2.Quit (False)
          Set ObjWord2 = Nothing
      Exit Sub
      TrataErro:
        msgbox 'Erro ao converter o documento'
      End Sub

      Porém a senha que coloquei no word, não está ficando no arquivo pdf após a conversão, e também não achei nenhuma opção para incluir uma senha nesse novo arquivo

      Não estou usando o Crystal e o documento do word é um documento qualquer que o cliente usa, por isso que não da para utilizar o crystal

      Alguém sabe como que eu poderia fazer essa conversão e colocar a senha nesse novo arquivo ou teria alguma outra forma de converter esse documento para pdf que desse para colocar a senha

      Desde já agradeço a todos
    • Por Luckshor
      Olá pessoal, tudo bem?
       
      Sou iniciante no MySQL, essa semana veio uma dúvida de 10 milhões de dólares.
       
      O Chefinho querido me entregou uma planilha excel com 554 mil registros e me pediu para inserir isso na tabela para fazer levantamento de algumas informações.
      Aiiii me vêm aquele dúvida...
       
      Fazer 554 mil INSERT INTO (') ???
       
      INSERT INTO `tab_teste_cliente` (`id_cliente`, `cnpj`, `razao_social`) VALUES ('NULL,'12345678901234','Empresa Linda');

      Massssss... quando eu exporto uma tabela no MySQL, ele faz aqueles inserts com 200 valores.
      Isso torna o INSERT mais rápido é melhor certo?

      Então há alguma forma de converter o Excel para um arquivo SQL com esses Inserts múltiplos e facilitar minha vida?  
      Algum site, script, gambiarra, subterfúgio técnico ou contato divino para fazer isso?
       
       
      Obrigado, pela ajuda pessoal até mais!
    • Por alekoxid
      Olá pessoal, estou fazendo um programa em Python, baseado em outro em C.
       
      Como eu escreveria esse trecho aqui em python?
      Se alguém puder me explicar, eu agradeço
       
      Código:
      #S é definido como 1000000
      #n_pts=20
       
       
      Void numeric(){
            float a, b , c, d;
            float P_[100],Q_[100], T[100];
            float den;
            float dx=L/(n_pts-1);
       
           P_[1]=0;
           Q_[1]=Ta;
           T[1]=Ta;
           T[n_pts]=Tb;
           a=(2*k/dx);
           c=d=k/dx;
           d=S*dx;
           int n;
       
          for ( n=2; n< n_pts; n++){
          den= (a-c*P_[n-1]);
          P_[n]= b/ den;
         Q_[n]= (d+c*Q_[n-1])/den
         }
       
        printf("\n\n Solução : \n")
        print("\n Ponto %2d T=%4.1f C", n_pts, T[n_pts]);
       
      for ( n=n_pts-1; n>1; n--){
          T[n]=Q_[n]+P_[n]*T[n+1];
          printf("\n Ponto %2 T=%4.1f C", n, T[n]);
          }
    • Por Adhara
      Olá, eu gostaria de saber se alguém pode me dar um help. Eu estou fazendo um jogo em AS3 e por algum motivo os Hit Test Object não estão funcionando.
       
      O código é este, até onde sei não tem nenhum erro:
       
      if (this.hitTestObject(MovieClip(parent).blocodeinterrogacao)) {
                  this.y = stage.stageHeight - 450-this.height;            
                  this.gotoAndStop("parado");
                  MovieClip(parent).moeda.visible = true;
                  MovieClip(parent).blocodeinterrogacao.x = -300;
      }
      if (this.hitTestObject(MovieClip(parent).blocodeinterrogacao2)) {
                  this.y = stage.stageHeight - 450-this.height;
                  this.gotoAndStop("parado");
                  MovieClip(parent).inscrita.visible = true;
                  MovieClip(parent).blocodeinterrogacao.x = -300;
      }
       
      Se alguém puder me ajudar, desde já agradeço.
    • Por waguinho
      Bom dia!
       
      Estou com problema quando converto um arquivo do Excel com extensão XLSX para JSON javascript, o método está funcionando normalmente,
      recebo um Array com objetos, porém esse Array só vem com a primeira "ABA" do arquivo Excel, uma vez que esse arquivo Excel que estou convertendo tem 4 abas no total.
      Como faço para acessar e converter todas essas "abas" ?
      Estou usando o 
      "https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.14.0/xlsx.full.min.js"  para conversão.  
      Segue meu código abaixo:
       
      Obrigado !!!
       
      function ajax(config) {   const xhr = new XMLHttpRequest() xhr.open(config.metodo, config.url, true) xhr.responseType = "arraybuffer"   xhr.onload = function(e) { if(xhr.status === 200) { config.sucesso(xhr.response) } else if(xhr.status >= 400) { config.erro(xhr.statusText) } } xhr.send() }  
      ajax({ url: "teste.xlsx", metodo: "GET", sucesso(resposta) {   const arraybuffer = resposta   const data = new Uint8Array(arraybuffer) const arr = []   for(let i = 0; i !=data.length; i++) { arr[i] = String.fromCharCode(data[i]) }   let bstr = arr.join("") const workbook = XLSX.read(bstr, { type:"binary" })  
      const first_sheet_name = workbook.SheetNames[0]   const worksheet = workbook.Sheets[first_sheet_name] var info = XLSX.utils.sheet_to_json(worksheet, { raw: true })   return info   }, erro(e) { console.log(e) }  
      })
×

Informação importante

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