4つの図形を描画してグラデーション塗りつぶしで塗りつぶそうとしていますが、期待どおりに表示されるのは2つだけで、他の2つは機能しません。問題は、4つのグラデーション塗りつぶしにまったく同じコードを使用することです。
import flash.display.Sprite;
import flash.geom.Matrix;
import flash.display.GradientType;
drawBackground();
function drawBackground():void{
var ground:Sprite = new Sprite();
addChild(ground);
ground.graphics.lineStyle(2,0x999999);
ground.graphics.beginFill(0xE6E6E6, 0.5);
ground.graphics.drawRect(0,0,640,610);
ground.graphics.endFill();
ground.x = 30;
ground.y = 60;
var mat:Matrix;
var color:Array;
var alphas:Array;
var ratio:Array;
mat=new Matrix();
color=[0xD5D5D5,0x999999];
alphas=[0.5, 0.8];
ratio=[0,255];
var topwall:Sprite=new Sprite();
mat.createGradientBox(700,60,Math.PI/2);
topwall.graphics.lineStyle(2,0x999999);
topwall.graphics.beginGradientFill(GradientType.LINEAR, color, alphas, ratio, mat);
topwall.graphics.moveTo(0, 0);
topwall.graphics.lineTo(700, 0);
topwall.graphics.lineTo(670, 60);
topwall.graphics.lineTo(30,60);
this.addChild(topwall);
var leftwall:Sprite=new Sprite();
mat.createGradientBox(30,700,0);
leftwall.graphics.lineStyle(2,0x999999);
leftwall.graphics.beginGradientFill(GradientType.LINEAR, color, alphas, ratio, mat);
leftwall.graphics.moveTo(0, 0);
leftwall.graphics.lineTo(0,700);
leftwall.graphics.lineTo(30, 670);
leftwall.graphics.lineTo(30,60);
this.addChild(leftwall);
var bottomwall:Sprite=new Sprite();
mat.createGradientBox(700,700,-Math.PI/2);
bottomwall.graphics.lineStyle(2,0x999999);
bottomwall.graphics.beginGradientFill(GradientType.LINEAR, color, alphas, ratio, mat);
bottomwall.graphics.moveTo(30, 670);
bottomwall.graphics.lineTo(670,670);
bottomwall.graphics.lineTo(700, 700);
bottomwall.graphics.lineTo(0,700);
this.addChild(bottomwall);
var rightwall:Sprite=new Sprite();
mat.createGradientBox(30,700,0);
rightwall.graphics.lineStyle(2,0x999999);
rightwall.graphics.beginGradientFill(GradientType.LINEAR, color, alphas, ratio, mat);
rightwall.graphics.moveTo(670, 60);
rightwall.graphics.lineTo(670,670);
rightwall.graphics.lineTo(700, 700);
rightwall.graphics.lineTo(700,0);
this.addChild(rightwall);
}
現在、上壁と左壁は適切に動作しますが、残りの2つは単色で塗りつぶされています。誰もが理由を知っているかもしれませんか?