2013-05-02 52 views
0

我似乎在这里有一些严重的问题 - 我试图显示图像并将其转换,然后在底部闪烁文字。如何在Corona SDK中的图像上显示闪烁文字?

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‘文本’(一个零值)”

我在这个总的小白,所以要温柔!

+0

尽我所能,尽量避免[闪烁文字](http://stackoverflow.com/questions/1211044/what-is-the-replacement-for-a-blinking-text-in-a-web如果可能的话)。 – naththedeveloper 2013-05-02 20:18:10

+0

请注意您正在使用“文本”作为全局变量。即使你实现了功能,这也不是一个好习惯。当你的应用程序增长时,以这种方式使用全局变量将失去控制并且失去可读性。 – 2014-03-25 09:01:37

回答

0

您的问题是,当调用Blink2()时,它会查找当时未创建的对象“文本”。所以你应该首先检查是否有一个名为“text”的对象。这里是新的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 
+0

不,在之前的图像淡入淡出之后,Splash函数被onComplete调用。 – 2013-05-02 21:41:21

+0

我编辑了我的答案 – 2013-05-03 05:37:26

+0

你是一个天才的家伙。像魅力一样工作。 – 2013-05-03 06:23:33

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

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

0

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

local text = {} 

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