MX.Image = MX.Object3D.extend({ init: function (ops) { this.type = "Image" var layer = this layer.width = 0 layer.height = 0 layer.x = ops.x || 0 layer.y = ops.y || 0 layer.z = ops.z || 0 layer.backface = ops.backface || false if (layer.backface) { layer.el.classList.add("backface-visible") } if (ops.src) { this.loadTexture(ops) } if (ops.className) { layer.el.classList.add(ops.className) } layer.el.style.backgroundRepeat = 'no-repeat' this.dirty = true this.updateChildren = true this.update() }, loadTexture: function(ops){ var layer = this layer.ops = defaults(ops, layer.ops) var image = new Image() image.onload = function(){ layer.scale = layer.ops.scale || 1 layer.width = image.naturalWidth layer.height = image.naturalHeight layer.x = layer.ops.x || 0 layer.y = (layer.ops.y || 0) + layer.scale * layer.height/2 + 1 layer.z = layer.ops.z || 0 layer.rotationX = layer.ops.rotationX || 0 layer.rotationY = layer.ops.rotationY || 0 layer.rotationZ = layer.ops.rotationZ || 0 layer.el.style.backgroundImage = "url(" + image.src + ")" layer.el.classList.add('image') layer.dirty = true layer.update() } image.src = ops.src; }, move: function(ops){ var layer = this layer.ops = defaults(ops, layer.ops) for (var i in ops) { layer[i] = ops[i] } layer.dirty = true layer.update() }, toString: function(){ var params = "id src width height depth x y z rotationX rotationY rotationZ scale".split(" ") return this.__toString(params) }, })