2016-12-28 14 views
1

いい午後! キャンバスに矩形を描画するために作成した関数について質問があります。次のように定義済みの関数を呼び出し、その関数内の変数のプロパティにアクセスするにはどうすればよいですか?

機能は次のとおりです。

function desenharRetangulo(x, y, w, h) { 

    var ParametrosRetangulo = { 
    texto: "", 
    transparencia: 1, 
    corRetangulo: "", 
    bordaRetanguloCor: "", 
    corFonte: "", 
    tamanhoFonte: 12, 
    retanguloLineWidth: 6, 
} 

ctx.strokeStyle = ParametrosRetangulo.bordaRetanguloCor; 
ctx.lineWidth = ParametrosRetangulo.retanguloLineWidth; 
ctx.globalAlpha = ParametrosRetangulo.transparencia; 
ctx.fillStyle = ParametrosRetangulo.corRetangulo; 
ctx.fillRect(x, y, w, h); 
ctx.strokeRect(
    x -= ParametrosRetangulo.retanguloLineWidth/2, 
    y -= ParametrosRetangulo.retanguloLineWidth/2, 
    w += ParametrosRetangulo.retanguloLineWidth, 
    h += ParametrosRetangulo.retanguloLineWidth 
); 
ctx.globalAlpha = 1.0; 
ctx.textBaseline = "middle"; 
ctx.fillStyle = ParametrosRetangulo.corFonte; 
ctx.font = ParametrosRetangulo.tamanhoFonte + "px" + " " + "Courier New"; 
textX = x + w/2 - ctx.measureText(ParametrosRetangulo.texto).width/2; 
textY = y + h/2; 
ctx.fillText(ParametrosRetangulo.texto, textX, textY); 
} 

私は他の方法

に「desenharRetangulo」関数を呼び出すとき、私は変数にアクセスする方法を知っている「ParametrosRetangulo」を好きとそのプロパティの値を変更します

お聞きいただきありがとうございます

+2

をオーバーライドする必要があるただし、HTTPでの答え受け取ることがあります。// PTを。 stackoverflow.com。 –

+0

申し訳ありません。私はそれがブラジルのstackoverflowだと思う。私は編集します。 –

+3

@AlineVianna、質問がポルトガル語であった間にいくつかの下降声明を受け取りました.3票を閉じる...この質問を削除し、あなたがそれを翻訳したので、*新しい*質問...新たに開始! –

答えて

1

私はあなたの機能のオプションパラメータとしてParametrosRetanguloを持っていると思います。 だから、あなたは関数の外にその値を変更したい場合には、あなただけのデフォルトパラメータ

function desenharRetangulo(x, y, w, h, ParametrosRetangulo = { 
 
    texto: "", 
 
    transparencia: 1, 
 
    corRetangulo: "", 
 
    bordaRetanguloCor: "", 
 
    corFonte: "", 
 
    tamanhoFonte: 12, 
 
    retanguloLineWidth: 6, 
 
}) { 
 

 
ctx.strokeStyle = ParametrosRetangulo.bordaRetanguloCor; 
 
ctx.lineWidth = ParametrosRetangulo.retanguloLineWidth; 
 
ctx.globalAlpha = ParametrosRetangulo.transparencia; 
 
ctx.fillStyle = ParametrosRetangulo.corRetangulo; 
 
ctx.fillRect(x, y, w, h); 
 
ctx.strokeRect(
 
    x -= ParametrosRetangulo.retanguloLineWidth/2, 
 
    y -= ParametrosRetangulo.retanguloLineWidth/2, 
 
    w += ParametrosRetangulo.retanguloLineWidth, 
 
    h += ParametrosRetangulo.retanguloLineWidth 
 
); 
 
ctx.globalAlpha = 1.0; 
 
ctx.textBaseline = "middle"; 
 
ctx.fillStyle = ParametrosRetangulo.corFonte; 
 
ctx.font = ParametrosRetangulo.tamanhoFonte + "px" + " " + "Courier New"; 
 
textX = x + w/2 - ctx.measureText(ParametrosRetangulo.texto).width/2; 
 
textY = y + h/2; 
 
ctx.fillText(ParametrosRetangulo.texto, textX, textY); 
 
}

+0

ありがとうございます。良い解像度。私はそれを使用します。 =) –

関連する問題