グラデーション塗りの四角形を描画する
AdobeHELPのサンプルを見ながらまとまると
------------------------------------------------------------------------------------
//var myRect:Shape = new Shape();
//色を決める
var colors:Array = [0xFF0000, 0x0000FF];
//アルファを決める
var alphas:Array = [100, 100];
//比率を決める
var ratios:Array = [0, 0xFF];
//グラデーションのサイズ()と変形量を決める
グラデーションの塗りの幅と高さは、Graphics オブジェクトを使用して描画される幅と高さではなく、
グラデーションマトリックスの幅と高さによって決定されます。Graphics オブジェクトを使用して描画する場合、グラデーションマトリックスのその座標に存在するものが描画されます。
drawRect() などの Graphics オブジェクトのシェイプメソッドのいずれかを使用した場合でも、グラデーションは描画されるシェイプのサイズには伸縮されません。グラデーションのサイズはグラデーションマトリックス自体で指定する必要があります。
var myMatrix:Matrix = new Matrix();
myMatrix.createGradientBox(300, 300, 0, 0, 0);//幅300px 高さ300pxにする
myRect.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, myMatrix);
----------------------------------------------------------------------------------------
理由は分からないが、描画方法としては2種類あるようだ。
----------------------------------------------------------------------------------------
myRect.graphics.drawRect(0,0,300,300);
addChild(myRect)
----------------------------------------------------------------------------------------
もしくは
----------------------------------------------------------------------------------------
myRect.graphics.lineTo(0, 300);
myRect.graphics.lineTo(300, 300);
myRect.graphics.lineTo(300, 0);
myRect.graphics.lineTo(0, 0);
描画について
AS3で描画をするとき、ShapeクラスorSpriteクラスで迷ったので、ヘルプを見たら解決した。
-----------------------------------------
Shape クラスは、ActionScript 描画アプリケーションプログラムインターフェイス (API) を使用して単純なシェイプを作成するときに使用されます。Shape クラスには、Graphics クラスからメソッドにアクセスできる graphics プロパティがあります。
Sprite クラスにも graphics プロパティがあり、これには Shape クラスでは使用できない他の機能があります。たとえば、Sprite オブジェクトは表示オブジェクトコンテナであるのに対し、Shape オブジェクトはそうではありません (子表示オブジェクトも持てません)。
したがって、表示するグラフィックスが同じであっても、Sprite オブジェクトは、Shape オブジェクトよりも多くのメモリを消費します。
ただし、Sprite オブジェクトではマウスクリックイベントがサポートされますが、Shape オブジェクトではサポートされません。
