2

mc14フレームでエクスポートするリソースファイルがあるとしましょう。新しいフレームを作成して、次の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

[編集]詳細

FlashIDEを使用していません。使ってます:

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

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

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

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

4

2 に答える 2

5

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;
       }
    }
}
于 2009-01-15T09:53:14.647 に答える
0

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

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

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

于 2009-01-15T08:58:41.870 に答える