質問

4フレームの mc1 をエクスポートするリソースファイルがあるとします。新しい MovieClip を作成し、次のようにフレームを挿入します:

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

[編集]詳細

Flash IDEを使用していません。私は使用しています:

  • Inkscape(SVG生成用)
  • swfmill(アセットファイルを作成するため)
  • ハックス(アニメーションを作成する)

現時点では、ゲームやインタラクティブなものを構築しようとはしていません。背景のスプライトが回転するシンプルなアニメーションを作成しました(それだけです)。これを実現するために TimerEvent を使用しました。しかし、代わりに、MovieClipを構築し、個々のフレームをアタッチして、ループで再生できるようにしたいのです。

別の方法として、MovieClipを作成し、プログラムでフレームごとに描画することもできます。 (そしてもちろんループで再生します)

基本的に、swfmillのXMLの代わりにActionScriptを使用してコンテンツを生成したいと思います( simple 方言ではなく、 simple で問題ありません)。私は初心者なので、他にどんな情報を提供できるかわかりません。他の詳細情報を提供できるかどうか教えてください

役に立ちましたか?

解決

Flash IDEがなければ、gotoAndStop()などを使用してもほとんど意味がありません。

異なるフレームに異なるアセットを追加することはできないため、addChild(assetToAdd)を使用してそれらをすべてレイヤーとして追加し、1つを除くすべてをvisible = falseに設定する必要があります。次に、次のような単純な関数を追加します。

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;
       }
    }
}

他のヒント

私はあなたがやろうとしていることをする便利な方法を知りません。 currentFrameは読み取り専用のプロパティであるため、この例は機能しません。また、実際のフレームを構成するデータではなく、フレーム番号を表す整数のみが返されます。

フレームを動的に再配置する必要がある場合、gotoAndPlay(x)を任意の番号に変換するカスタムクラスでその特定のMovieClipをラップすることをお勧めします。

ただし、これは達成しようとしている内容によってはあまり役に立たないかもしれませんが、質問を少し明確にすれば、適切な提案ができると確信しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top