ddlightw 0 Denunciar post Postado Novembro 28, 2012 Tentei adaptar esse código, mas o movieclip não se move pela tela, tem uma diferença de visualização, não funciona com os mesmos números no AS3, tem alguma alteração do as2? Tem outra forma de fazer esse calculo? AS2 for (var i = 0; i < 250; i++) { var nm = "star" + i; _root.attachMovie("star", nm, i); _root[nm]._x = Math.random() * 550; _root[nm]._y = Math.random() * 400; _root[nm].distance = Math.random() * 200 + 1; _root[nm]._xscale = 1000 / _root[nm].distance; _root[nm]._yscale = 1000 / _root[nm].distance; _root[nm].speed = 20 / _root[nm].distance; _root[nm].onEnterFrame = function() { this._x += this.speed; if (this._x > 550) this._x = 0; } } AS3 var stageWidth:Number = stage.stageWidth; var stageHeight:Number = stage.stageHeight; //var speed = 10; for (var i = 0; i < 250; i++) { var bola = new Star(); addChild(bola); bola.x = Math.random() * stageWidth - 10; bola.y = Math.random() * stageHeight - 10; bola.distance = Math.random() * 500 + 1; bola.scaleX = 25 / bola.distance; bola.scaleY = 25 / bola.distance; bola.speed = 500 / bola.distance; trace(this.speed); bola.addEventListener(Event.ENTER_FRAME, EnterFrame); function EnterFrame(e:Event):void{ this.x += this.speed; if (this.x > stageWidth) this.x = 0; } } Compartilhar este post Link para o post Compartilhar em outros sites
marcos.cardoso 10 Denunciar post Postado Novembro 28, 2012 Bom dia. Ao invés de usar this.speed, utilize bola.speed e ao invés de utilizar this.x use bola.x e assim por diante. Dentro da função enter frame você deve colocar e.currentTarget ao invés de this. abs Compartilhar este post Link para o post Compartilhar em outros sites
ddlightw 0 Denunciar post Postado Dezembro 1, 2012 Valeu!!! :grin:/>/> Funcionou. Ficou assim: var stageWidth:Number = stage.stageWidth; var stageHeight:Number = stage.stageHeight; for (var i = 0; i < 250; i++) { var bola = new Star(); addChild(bola); bola.x = Math.random() * stageWidth; bola.y = Math.random() * stageHeight; bola.distance = Math.random() * 2000 + 1;// tive que modificar o valor bola.scaleX = 8 / bola.distance; // tive que modificar o valor bola.scaleY = 8 / bola.distance; // tive que modificar o valor bola.speed = 120 / bola.distance; // tive que modificar o valor trace(bola.speed); bola.addEventListener(Event.ENTER_FRAME, EnterFrame); function EnterFrame(e:Event):void { e.currentTarget.x += e.currentTarget.speed; if (e.currentTarget.x > stageWidth) { e.currentTarget.x = 0; } } } Tem algumas coisas que eu fiquei sem entender, a utilização do _root[nm] e do this, isso não é meio de programar é algo que faz parte do AS2? var nm = "star" + i; //se tem o loop, pra que serve? _root.attachMovie("star", nm, i);// essa parte é para criar o movieclip, certo? _root[nm]// existe isso no AS3? porque eu entendia que seria um array, mas nesse caso acho que não é essa a função. Compartilhar este post Link para o post Compartilhar em outros sites
marcos.cardoso 10 Denunciar post Postado Dezembro 2, 2012 O root ainda existe só que agora é root, mas eu particularmente quase não uso. O this se refere ao nível atual. No as 2.0 o this se referia a um objeto específico como um botão ou um movie clip dependendo do escopo. A utilização de [] (colchetes) ocorre devido ao estilo dos objetos do actionscript 3.0 onde você pode acessar as propriedades por meio de chaves, como strings. Assim, quando você utiliza bola["speed"] ou bola["bt" + 1] você está acessando uma propriedade do objeto bola e é o mesmo que utilizar bola.speed e bola.bt1 abs Compartilhar este post Link para o post Compartilhar em outros sites
ddlightw 0 Denunciar post Postado Fevereiro 12, 2013 Entendi, obrigado. Compartilhar este post Link para o post Compartilhar em outros sites