AS3アニメーションにMCがあり、その高さを下から上に上げたいのですが、これは、登録ポイントがMCの下部で、幅の中心(水平方向の中心)である必要があることを意味します。
どうすればこれを行うことができますか?
ありがとうございました。
AS3アニメーションにMCがあり、その高さを下から上に上げたいのですが、これは、登録ポイントがMCの下部で、幅の中心(水平方向の中心)である必要があることを意味します。
どうすればこれを行うことができますか?
ありがとうございました。
古い登録ポイントの問題に対する私の推奨事項、いくつか...
AS3 を使用して動的に再配置する必要がある場合...
var rect:Rectangle = bitmapData.getColorBoundsRect(0xff000000, 0, false); yourCroppedBitmapData.copyPixels( bitmapData, rect, ... );
...信頼できる左上隅のレジストレーション ポイントを取得したら、このビットマップをスプライト コンテナーに配置して (上記のように) 上に拡大する計算を行うことができます。
または...サルを雇うのも楽しいでしょう:P
しかし、ええ、これらはシンボルを再配置できる代替方法の一部です。
ああ、古い登録ポイントの問題。:)
Flash オーサリングで簡単にできるように、表示オブジェクトの登録ポイントを変更できる小さなカスタム クラスを見たことがあります。気になる方はググってみてください。
ただし、解決策はかなり簡単です。表示オブジェクトの登録ポイントは、オブジェクトが表示リストに追加される方法に基づいて割り当てられます。表示オブジェクトを表示リストに追加するときにそれを考慮に入れる必要があります。次に、登録ポイントを変更するための簡単な計算を少し設定します。
//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();