Парень на этом форуме сказал мне использовать это:
Пропуск кадра на Flash
Вместо того, чтобы делать как thing.x -= 4;
Итак, я сделал это:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.utils.getTimer;
public class Seamine extends MovieClip {
private var core:Object;
private var lastFrame:int = 0;
private var thisFrame:int;
private var pixelsPerSecond:Number = 100;
private var percentToMove:Number;
public function Seamine():void{
addEventListener(Event.ADDED_TO_STAGE, onadd);
}
private function onadd(e:Event){
stage.addChild(this);
addEventListener(Event.ENTER_FRAME, loop);
}
private function loop(e:Event):void{
// Get the miliseconds since the last frame
thisFrame = getTimer();
percentToMove = (thisFrame - lastFrame) / 1000;
// Save the value for next frame.
lastFrame = thisFrame;
// Update your system based on time, not frames.
this.x -= pixelsPerSecond * percentToMove;
if(this.x < 0 - this.width/2)
{
stage.removeChild(this);
removeEventListener(Event.ENTER_FRAME, loop);
removeEventListener(Event.ADDED_TO_STAGE, onadd);
}
if(GlobalVariables.GameOver == 1)
{
this.alpha -= .03;
}
if(this.alpha == 0)
{
this.alpha = 0;
stage.removeChild(this);
removeEventListener(Event.ENTER_FRAME, loop);
removeEventListener(Event.ADDED_TO_STAGE, onadd);
}
}
}
}
Но по какой-то причине мой "Seamine" занимает другие позиции? Так что это не начинается в начале. Пример.
1 Запуск Seamine, он имеет правильную скорость. Следующее появление Seamine, но на этот раз оно не начинается с «начального значения x», потому что начинается с Seamine 1.
Я порождаю Seamines вот так:
var tm_Seamine:Timer = new Timer (2000);
tm_Seamine.addEventListener(TimerEvent.TIMER, Spawn_Seamine);
tm_Seamine.start();
function Spawn_Seamine(e:Event){
var SM:Seamine = new Seamine();
var RandomYValue_1_Box:Number = Math.ceil(Math.random()*500);
addChild(SM);
SM.y = RandomYValue_1_Box;
SM.x = 1000;
addEventListener(Event.ENTER_FRAME, Hit_SM)
function Hit_SM (e:Event){
if(SM.hitTestPoint(Player.x,Player.y, true))
{
GlobalVariables.GameOver = 1;
}
}
}