0

我似乎在这里遇到了一些严重的问题 - 我正在尝试显示图像并将其转换,然后在底部有闪烁的文本。

function Splash()
   local item = display.newImage("SplashImage.png")
   item.x = display.contentWidth*0.5
   item.y = display.contentHeight*0.5
   item.alpha=0
   transition.to(item, {time =1500, alpha=1, onComplete=Blink})
end

-- blinking text

function Blink()
   text = display.newText("This is Blinking Text", 100, 100, "Arial", 22)
   text.x = display.contentWidth/2
   text.y = display.contentHeight/1.2
   text.alpha=0
transition.to(text, {time =1500, alpha=1, onComplete=Blink2})
end

function Blink2()
   if (text.alpha > 0) then                  [--THIS IS THE LINE THAT IS BROKEN APPARENTLY]
      transition.to(text, {time=1500, alpha=0})
   else
      transition.to(text, {time=1500, alpha=1})
   end
end

txt_blink = timer.performWithDelay(500, Blink2, 0)

代码中断并出现错误“尝试索引 upvalue 'text' (a nil value)”

我在这方面完全是菜鸟,所以要温柔!

4

3 回答 3

0

该错误表明您的函数 Blink2 已被要求访问以前未声明为表/对象的变量“文本”。放一个:

local text = {}

在顶部,它应该可以解决您的问题。

于 2013-05-05T20:32:16.750 回答
0

试试这个,看看它是否适合你。

--> Pre-declare the text variable
local blinkingText

--> Create the splash function
function Splash()
    local item = display.newImage("SplashImage.png")
    item.x = display.contentWidth*0.5
    item.y = display.contentHeight*0.5
    item.alpha=0
    transition.to(item, {time =1500, alpha=1, onComplete=createBlinkingText})
end

--> Create the blinking text
function createBlinkingText()
    blinkingText = display.newText("This is Blinking Text", 100, 100, "Arial", 22)
    blinkingText.x = display.contentWidth/2
    blinkingText.y = display.contentHeight/1.2
    blinkingText.alpha=0
    transition.to(blinkingText, {time =1500, alpha=1, onComplete=startBlinking})
end

--> Start the blinking
function startBlinking()
    if (blinkingText.alpha > 0) then
        transition.to(blinkingText, {time=1500, alpha=0, onComplete=startBlinking})
    else
        transition.to(blinkingText, {time=1500, alpha=1, onComplete=startBlinking})
    end
end

--> Call the splash function
Splash()

我更改了几个变量名称,以便您更好地理解它们。

于 2013-05-03T01:07:34.693 回答
0

您的问题是,当调用 Blink2() 时,它会查找当时未创建的对象“文本”。所以你应该首先检查是否有一个名为“文本”的对象。这是为您准备的新 blink2() 函数:

function Blink2()
    if text ~= nil then
        if (text.alpha > 0) then
            transition.to(text, {time=1500, alpha=0})
        else
            transition.to(text, {time=1500, alpha=1})
        end
    end
end
于 2013-05-02T21:09:39.567 回答