初心者:Haxe / ActionScript3のMovieClipにフレームを動的に挿入する
-
22-07-2019 - |
質問
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をラップすることをお勧めします。
ただし、これは達成しようとしている内容によってはあまり役に立たないかもしれませんが、質問を少し明確にすれば、適切な提案ができると確信しています。