【问题标题】:How to display blinking text over an image in Corona SDK?如何在 Corona SDK 中的图像上显示闪烁的文本?
【发布时间】:2013-05-02 20:13:00
【问题描述】:

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

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)”

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

【问题讨论】:

  • 说真的,如果可能的话,我会尽量避免blinking text
  • 请注意,您将“文本”用作全局变量。即使您实现了该功能,这也不是一个好习惯。当您的应用程序增长时,以这种方式使用全局变量将失去控制并失去可读性。

标签: image text sdk coronasdk


【解决方案1】:

您的问题是,当调用 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

【讨论】:

  • 不,Splash 函数在上一张图像淡入淡出后由 onComplete 调用。
  • 你是个天才。像魅力一样工作。
【解决方案2】:

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

--> 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()

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

【讨论】:

    【解决方案3】:

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

    local text = {}
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-02
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多