为什么我需要在Gideros中使用Event.ENTER_FRAME?

local W = application:getLogicalWidth()
local H = application:getLogicalHeight()
local xD, yD, speed = 1, 1, 10
local img = newImage("myImage2.png", 0, 0)
local wd, ht = img:getWidth(), img:getHeight()

-- 定义函数 onEnterFrame
function onEnterFrame(event)
    -- 获取当前图像的位置
    local xP, yP = img:getPosition()
    -- 计算下一帧的位置
    xP = xP + xD*speed yP = yP + yD*speed

    -- 判断是否到达屏幕边缘,需要反转移动的方向
    if xP >= W-wd or xP == 0 then
        xD = −xD
    end

    if yP >= H-ht or yP == 0 then
        yD = −yD
    end

    -- 设置图像的新位置
    img:setPosition(xP, yP)
end

-- 给图像添加 enter frame 事件监听
img:addEventListener(Event.ENTER_FRAME, onEnterFrame)

以上代码通过 onEnterFrame 函数来移动图像,我们需要在每一帧都执行这个函数来让图像移动。因此,我们需要将 onEnterFrame 函数作为 Event.ENTER_FRAME 的监听函数。如果不添加 Event.ENTER_FRAME 监听,那么 onEnterFrame 函数将不会得到执行,图像也就不会移动。

点赞
用户3155415
用户3155415

Event.ENTER_FRAME 在 Gideros 运行的每一帧都会被调用。如果你没有使用它来运行以上代码,那么代码只会被执行一次,球会移动,然后球就不会再动了。

这是使用 enterframe 的例子(见第6步)

2014-04-19 20:47:14