1 decade ago by fulvio
I have the following image:
ig.module('game.entities.laser-beam').requires('impact.entity').defines(function() { EntityLaserBeam = ig.Entity.extend({ size: { x: 6, y: 0 }, offset: { x: 0, y: 0 }, _wmIgnore: true, type: ig.Entity.TYPE.B, checkAgainst: ig.Entity.TYPE.A, collides: ig.Entity.COLLIDES.NEVER, gravityFactor: 0, animSheet: new ig.AnimationSheet('media/sprites/laser-beam.png', 6, 1), lifetime: 1, fadetime: 1, canKill: false, sfxOn: new ig.Sound('media/sounds/respawn.*'), sfxOff: new ig.Sound('media/sounds/die-respawn.*'), init: function(x, y, settings) { this.parent(x, y, settings); this.addAnim('idle', 1, [0, 1]); this.idleTimer = new ig.Timer(); }, check: function(other) { if (this.canKill) { other.receiveDamage(2, this); } }, update: function() { if (this.currentAnim.frame == 0) { this.canKill = true; } else { this.collides = ig.Entity.COLLIDES.PASSIVE; this.canKill = false; } this.parent(); }, receiveDamage: function(amount, from) {} }); });
The
This creates the following with collision boxes turned on:
// This line is the big performance hit: ig.game.spawnEntity(EntityLaserBeam, posX, posY);
What I would like to do is stretch the
This was the post I found it on:
http://impactjs.com/forums/help/how-to-stretch-an-image-during-gameplay
Also keep in mind that this will be an iOS game and
I tried using the code above, however it doesn't seem to be working as expected. I don't see the image at all let alone stretched. Perhaps I'm using it the wrong way?
Thanks in advance for this one. I've been struggling with it for a while so any help would be greatly appreciated.
ig.module('game.entities.laser-beam').requires('impact.entity').defines(function() { EntityLaserBeam = ig.Entity.extend({ size: { x: 6, y: 0 }, offset: { x: 0, y: 0 }, _wmIgnore: true, type: ig.Entity.TYPE.B, checkAgainst: ig.Entity.TYPE.A, collides: ig.Entity.COLLIDES.NEVER, gravityFactor: 0, animSheet: new ig.AnimationSheet('media/sprites/laser-beam.png', 6, 1), lifetime: 1, fadetime: 1, canKill: false, sfxOn: new ig.Sound('media/sounds/respawn.*'), sfxOff: new ig.Sound('media/sounds/die-respawn.*'), init: function(x, y, settings) { this.parent(x, y, settings); this.addAnim('idle', 1, [0, 1]); this.idleTimer = new ig.Timer(); }, check: function(other) { if (this.canKill) { other.receiveDamage(2, this); } }, update: function() { if (this.currentAnim.frame == 0) { this.canKill = true; } else { this.collides = ig.Entity.COLLIDES.PASSIVE; this.canKill = false; } this.parent(); }, receiveDamage: function(amount, from) {} }); });
The
LaserDoorTopEntity
door entity:ig.module('game.entities.laser-door-top').requires('game.entities.laser-beam', 'impact.entity').defines(function() { EntityLaserDoorTop = ig.Entity.extend({ size: { x: 16, y: 16 }, gravityFactor: 0, animSheet: new ig.AnimationSheet('media/sprites/laser-door-top.png', 16, 16), target: null, targets: [], currentTarget: 0, finished: false, init: function(x, y, settings) { this.addAnim('idle', 1, [0]); this.parent(x, y, settings); this.targets = ig.ksort(this.target); }, update: function() { this.parent(); var target = ig.game.getEntityByName(this.targets[this.currentTarget]); //console.log("this.targets[0]=" + this.targets[0]); //console.log("target=" + target); if (target) { if (!this.finished) { var distanceTo = this.distanceTo(target) + 8; //console.log("distanceTo=" + distanceTo); for (var i = 0; i < distanceTo; i++) { var posX = (this.pos.x + 5); var posY = (this.pos.y + i + 4); // BIG performance hit: ig.game.spawnEntity(EntityLaserBeam, posX, posY); } this.finished = true; } } } }); });
This creates the following with collision boxes turned on:
// This line is the big performance hit: ig.game.spawnEntity(EntityLaserBeam, posX, posY);
What I would like to do is stretch the
EntityLaserBeam
to a certain height by using the draw()
method and ig.system.context.scale
and only ever spawn it once.This was the post I found it on:
http://impactjs.com/forums/help/how-to-stretch-an-image-during-gameplay
Also keep in mind that this will be an iOS game and
ig.system.context
as far as I know has not yet been completely implemented in the current version of iOSImpact.draw: function() { ig.system.context.save(); ig.system.context.scale(0, 1); // draw whatever you want here. E.g. you could just call this.parent() // to draw the entity's animation ig.system.context.restore(); }
I tried using the code above, however it doesn't seem to be working as expected. I don't see the image at all let alone stretched. Perhaps I'm using it the wrong way?
Thanks in advance for this one. I've been struggling with it for a while so any help would be greatly appreciated.