功能被称为更快 [英] Function being called faster

查看:138
本文介绍了功能被称为更快的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我做了一个飞扬的鸟游戏,并且有2个框架。框架 1 用于播放,而 2 用于播放。我在函数上放了一个 trace 调用,看看有多少次被调用。我发现死的越多,我的函数调用就越快, gravity 的次数也增加了,所以我的角色 flappy 每次死亡都会更快。请帮助。代码如下:

  var calls = 0; 
flappy.addEventListener(Event.ENTER_FRAME,fl_gravity);
函数fl_gravity(event:Event):void {
calls ++;
if(dead){
if(flappy.hitTestObject(ground)){
gravity = 0;
} else {
gravity + = 0.5;
}
upPressed = false;
} else {
flappy.x + = 2.5;
}
flappy.y + = gravity;
gravity + = 0.5;
trace(calls);


解决方案

死回到帧1(这里代码可能是)你添加另一个框架监听器,所以现在你的函数每帧执行两次(每个事件监听器一次)。确保只添加一次事件侦听器:

  var initialized:Boolean; 

if(!initialized)
{
initialized = true;
flappy.addEventListener(Event.ENTER_FRAME,fl_gravity);
}


I hava made a flappy bird game and there are 2 frames. frame 1 is for playing while 2 is for death. I put a trace call on a function to see how many times is it called due to a problem. I found out that the more i die , the speedy my function call gets and the gravity is increased more times, so, my character flappy falls faster each time it dies.Please help. Here's the code:

var calls = 0;
flappy.addEventListener(Event.ENTER_FRAME, fl_gravity);
function fl_gravity(event: Event): void {
    calls++;
    if (dead) {
        if (flappy.hitTestObject(ground)) {
            gravity = 0;
        } else {
            gravity += 0.5;
        }
        upPressed = false;
    } else {
        flappy.x += 2.5;
    }
    flappy.y += gravity;
    gravity += 0.5;
    trace(calls);
}

解决方案

It probably happens because when you die and get back to frame 1 (where this code probably is) you add another enterframe listener so now your function is executed twice per frame (one time for each event listener). Make sure you add your event listener only once:

var initialized:Boolean;

if(!initialized)
{
    initialized = true;
    flappy.addEventListener(Event.ENTER_FRAME, fl_gravity);
}

这篇关于功能被称为更快的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆