Показать сообщение отдельно
Старый 30.04.2009, 14:16
FreeS вне форума Посмотреть профиль Отправить личное сообщение для FreeS Посетить домашнюю страницу FreeS Найти все сообщения от FreeS
  № 1  
Ответить с цитированием
FreeS

Регистрация: Sep 2008
Адрес: Lviv, Ukraine
Сообщений: 5
Отправить сообщение для FreeS с помощью ICQ
По умолчанию AS2 to AS3 - жуткие тормоза

Делаю игру. Начал делать на АС2 но начали появляться подтормаживания и просадки фпс. Пока не критично, но ещё много впереди и в конце концов, это стало бы узким местом. Решил перебросить всё на АС3 пока не поздно, т.к. он вроде пошустрее, НО, получил тормозов ещё больше!

Что имеем:
вид сверху, в центре герой, бекгроунд - 2 штука растра 2500х2500 + ещё там фигни всякой типа мувика для хит теста и т.д.
Герой на месте, двигаю только бекгроунд со всеми составляющими.
В АС3 версии даже без ХитТеста, только скролл бека - фпс падает до 20-25. АС2 30 держал стабильно и с ХитТестом и стрельбой.

Код писал на фрейме мувика лежащего на главной сцене. Все обьекты внутри этого мувика. Вот код:

Код AS3:
stop();
//stage.frameRate = 120;
//var plsp = 25;
var speed:Number = 3.5;
var xspeed:Number = 0;
var yspeed:Number = 0;
//var lev = 0;
MovieClip(root).center.visible = false;
sf_holder.visible = false;
hit.visible = false;
Lshadow.vbullet.visible = false;
var canLight:Boolean = true;
var kLEFT:Boolean = false;
var kRIGHT:Boolean = false;
var kUP:Boolean = false;
var kDOWN:Boolean = false;
var radians:Number;
var grad:Number;
 
function ch_l() {
canLight = true;
}
 
var signal = true;
getFPS = function() {
    if(signal == true) {
        time = getTimer();
    } else {
        rate = int(1000 / (getTimer() - time));
    }
    signal = !signal;
    //return rate;
	MovieClip(root).fpst.text = "FPS: " + rate;
}
 
function enterFrameHandler( event : Event ) : void {
getFPS();
 
radians = Math.atan2 (hero.x-mouseX, hero.y-mouseY);
grad = -radians * 180 / Math.PI;
hero.rotation = grad;
 
 
if(kLEFT){ xspeed -= speed;}
if(kRIGHT){ xspeed += speed;}
if(kUP){ yspeed -= speed;}
if(kDOWN){ yspeed += speed;}
 
	Lshadow.x += xspeed*-1;
	Lshadow.y += yspeed*-1;
	grnd.x += xspeed*-1;
	grnd.y += yspeed*-1;
	trees.x += xspeed*-1;
	trees.y += yspeed*-1;
	hit.x += xspeed*-1;
	hit.y += yspeed*-1;
 
Lshadow.heroLight.rotation = hero.rotation;
Lshadow.heroLight.x += xspeed;
Lshadow.heroLight.y += yspeed;
Lshadow.shL.x += xspeed;
Lshadow.shL.y += yspeed;
 
	xspeed = 0;
	yspeed = 0;
 
      }
 
function keyPressed(event:KeyboardEvent):void {
 
if(event.keyCode == Keyboard.LEFT){
	kLEFT = true;
}
if(event.keyCode == Keyboard.RIGHT){
	kRIGHT = true;
}
if(event.keyCode == Keyboard.UP){
	kUP = true;
}
if(event.keyCode == Keyboard.DOWN){
	kDOWN = true;
}
 
}
function keyUP(event:KeyboardEvent):void {
 
if(event.keyCode == Keyboard.LEFT){
	kLEFT = false;
}
if(event.keyCode == Keyboard.RIGHT){
	kRIGHT = false;
}
if(event.keyCode == Keyboard.UP){
	kUP = false;
}
if(event.keyCode == Keyboard.DOWN){
	kDOWN = false;
}
 
}
 
 
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUP);
addEventListener( Event.ENTER_FRAME, enterFrameHandler );
С АС3 незнаком. Это первый опыт. Никак не пойму где туплю, откуда такие тормоза ?