2012-03-24 6 views
0

Wir kennen alle Leinwand Kontext Eigenschaft wie folgt fest:Wie setze ich die Context-Eigenschaft von html5 canvas nach json format?

ctx.textBaseline = "top"; 
ctx.shadowColor = "#000"; 
ctx.shadowOffsetX = 10; 
ctx.shadowOffsetY = 0; 
ctx.shadowBlur = 10; 

Aber wenn ich json Formatdaten wie dieses:

{textBaseline: "top", 
shadowColor: "#000", 
shadowOffsetX: 10, 
shadowOffsetY: 0, 
shadowBlur: 10} 

Wie ctx Eigentum durch die obigen Daten setzen?

Ich kann so tun:

function setctxproperty(jsondata) { 
    if (jsondata[textBaseline]) { 
     ctx.textBaseline = jsondata[textBaseline]; 
    } else if (jsondata[shadowColor]) { 
     ctx.shadowColor = jsondata[shadowColor]; 
    } else if (...) { 
     ... 
    } 
} 

Haben Sie eine gute Möglichkeit haben?

Danke.

Antwort

1

Es gibt einen besseren Weg. Sie können so etwas wie folgt verwenden:

function setProps(data) { 
    for (var p in data) { 
    if (!data.hasOwnProperty(p)) continue; 
    ctx[p] = data[p]; 
    } 
} 
+2

sollten Sie fügen [hasOwnProperty] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/hasOwnProperty), wenn for..in – Bakudan

+1

mit Ja , Ich habe es vergessen. Vielen Dank. –

+0

Danke. Aber warum "wenn (! Data.hasOwnProperty (p)) weitergeht?"? Ich verwende stattdessen "if (! Ctx.hasOwnProperty (p)) continue;". Dann kann es nicht funktionieren. – coordinate