質問

AS3アニメーションにMCがあり、その高さを下から上に増やしたいと考えています。これは、登録ポイントがMCの下部と幅の中心(水平中心)であることを意味します。

どうすればこれを行うことができますか?

ありがとうございました。

役に立ちましたか?

解決

ああ、古い登録ポイントの問題。 :)

フラッシュオーサリングで簡単にできるように、ディスプレイオブジェクトの登録ポイントを変更できる小さなカスタムクラスを見ました。あなたが興味があるなら、グーグル周辺。

ただし、ソリューションはかなり簡単です。ディスプレイオブジェクトの登録ポイントは、オブジェクトが表示リストに追加される方法に基づいて割り当てられます。ディスプレイオブジェクトをディスプレイリストに追加しているときにそれを考慮する必要があります。登録ポイントを変更するために少し簡単な数学を設定する必要があります。

//Set up rect's width and height
var rectWidth:uint = 200;
var rectHeight:uint = 100;

//Assign registration point (TL, TC, TR, CL, C, CR, BL, BC, BR = top, center, bottom, left, right)
var registration:String = "C"

//Assign rect's X and Y properties
var rectX:int;
var rectY:int;

switch (registration)
       {
       case "TL": rectX = 0;
                  rectY = 0;
                  break;

       case "TC": rectX = -rectWidth / 2;
                  rectY = 0;
                  break;

       case "TR": rectX = -rectWidth;
                  rectY = 0;
                  break;

       case "CL": rectX = 0;
                  rectY = -rectHeight / 2;
                  break;

       case "C":  rectX = -rectWidth / 2;
                  rectY = -rectHeight / 2;
                  break;

       case "CR": rectX = -rectWidth;
                  rectY = -rectHeight / 2;
                  break;

       case "BL": rectX = 0;
                  rectY = -rectHeight;
                  break;

       case "BC": rectX = -rectWidth / 2;
                  rectY = -rectHeight;
                  break;

       case "BR": rectX = -rectWidth;
                  rectY = -rectHeight;
       }


//Draw the rect
var rect:Sprite = new Sprite();
rect.graphics.beginFill(0xFF0000);
rect.graphics.drawRect(rectX, rectY, rectWidth, rectHeight);
rect.graphics.endFill();

他のヒント

古い登録ポイントの問題に対する私の推奨事項、いくつかのこと...

  • シンボルを編集でき、処理するためのわずかなものしか持っていない場合は、正直に言って、手動で行います。
  • 処理するのにかなりのほんの一握りがありますが、それでも記号を再配置するためにサルを雇うことができる場合は、JSFLスクリプトを調べてライブラリシンボルの選択を処理することを検討してください。
  • AS3を使用して動的に再配置する必要がある場合...

    • また、オブジェクトを別の容器に入れても構わないと、下部中央が(0,0)の場所を満たしている場所に新しいスプライトオブジェクトに入れて、資産の代わりにスプライト容器をスケーリングできます。
    • そして、あなたはあなたの資産のビットダタのスナップショットのためにベクトルの品質を犠牲にすることを気にしません、あなたの資産のスナップショットを取ります(それは「完全に開いた /伸ばされたものに見えるように)、ビットマップをトリミングします(:の組み合わせを使用して:

    var rect:rectangle = bitmapdata.getColorBoundSrect(0xff000000、0、false); yourcroppedbitmapdata.copypixels(bitmapdata、rect、...);

    ...信頼性の高い左上コーナリングされた登録ポイントができたら、数学を行い、このビットマップをスプライト容器(上記のように)に配置して上方にスケーリングできます。

または...サルを雇うことも楽しいでしょう:P

しかし、ええ、これらはシンボルを再配置できる別の方法の一部です。

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