Iniciante: dinamicamente inserir uma moldura para um clipe de filme no Haxe / ActionScript 3

StackOverflow https://stackoverflow.com/questions/446003

Pergunta

Vamos dizer que eu tenho um arquivo de recurso que as exportações mc1 com 4 quadros na mesma. Eu gostaria de criar uma nova MovieClip e inserir quadros como este:

mc2:flash.display.MovieClip = new flash.display.MovieClip()

mc1.gotoAndStop(2);
mc2.gotoAndStop(1);
mc2.currentFrame = mc1.currenctFrame
mc1.gotoAndStop(1);
mc2.gotoAndStop(2);
mc2.currentFrame = mc1.currenctFrame
mc1.gotoAndStop(2);
mc2.gotoAndStop(3);
mc2.currentFrame = mc1.currenctFrame
mc1.gotoAndStop(4);
mc2.gotoAndStop(4);
mc2.currentFrame = mc1.currenctFrame

[editar] Mais detalhes

Eu não estou usando o Flash IDE. Eu estou usando:

  • Inkscape (para a geração de SVG)
  • swfmill (para criar arquivos de recursos)
  • Haxe (para criar animações)

Eu não estou neste momento a tentar jogos de construção ou qualquer coisa interativa. Eu consegui criar uma animação simples, onde um sprite fundo está girando (e é isso). Eu costumava TimerEvents para conseguir isso. Mas ao invés disso eu realmente gostaria de ser capaz de construir um MovieClip e anexar quadros individuais sobre ele e, em seguida, jogá-lo em loop.

Como alternativa posso criar um MovieClip e apenas utilizá-lo quadro a quadro de programação. (E depois do jogo curso de circular)

Basicamente, eu gostaria de usar o ActionScript para gerar conteúdo em vez de XML do swfmill (não o dialeto simple, simple é bom). Desde que eu sou um novato eu não sei o que outras informações que lhe posso dar. Então, por favor me diga se eu posso fornecer quaisquer outros detalhes?

Foi útil?

Solução

Sem o Flash IDE, há pouco ponto em usar gotoAndStop () etc.

Como você não pode adicionar seus ativos diferentes em quadros diferentes, você deve adicioná-los todos como camadas usando addChild (assetToAdd) e definir todos, mas um para visível = false. Em seguida, adicione uma função simples como isto:

function showFrame(num:int):void
{
    for (var i:int = 0; i < numChildren; i++)
    {
       if (i == num)
       {
          getChildAt(i).visible = true;
       }
       else
       {
          getChildAt(i).visible = false;
       }
    }
}

Outras dicas

Eu não estou ciente de uma maneira conveniente de fazer o que você está tentando fazer. Seu exemplo não funcionará porque currentFrame é uma propriedade só de leitura, também tudo o que retorna um inteiro que representa o número de quadros, não os dados que compõem o quadro real.

A minha sugestão, se você precisa para reorganizar dinamicamente os frames, seria para embrulhar que MovieClip especial em uma classe personalizada que traduz o gotoAndPlay (x) para qualquer número que você deseja.

No entanto, isso pode não ser muito útil dependendo do que você está tentando alcançar, mas se você esclarecer sua pergunta um pouco Eu tenho certeza que podemos chegar a uma sugestão adequada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top