如何逐字显示字符串?

创建一个应用程序,询问用户的姓名,然后以垂直方式逐个字母地显示该名称。

  • 澄清我要做什么:一个接一个逐个字母地淡入用户名称,例如:Adam,“_A_”将在1秒后出现,并在显示的_A_下方,在3秒后出现“_d_”,在显示的_d_下方,在显示的_a_下方,在5秒后出现“_a_”,在显示的_a_下方,在7秒后出现“_m_”。视觉效果会产生一种多米诺骨牌效应。它们出现时会保持显示在屏幕上。

到目前为止,我能够获得用户的姓名并将其显示在侧面。使其在2秒内淡入。我卡在如何使字母逐个淡入上。

function submit ()
print( "connect" )
userName = userNameField.text
display_userName = display.newText( userName, display.contentWidth-20, display.contentHeight/2 )
    display_userName.rotation = 90
    display_userName.alpha = 0

userNameField: removeSelf( )
greeting:removeSelf( )
submitButton:removeSelf( )

transition.fadeIn( display_userName, {time = 2000} )

如果需要更多的代码,请让我知道。

点赞
用户2753334
用户2753334

下面是将每个字符存储在表中的代码片段。

初始化一个变量:

check = 0;

这里的 splitWord 是一个用于存储字符串中每个字符的表格,变量 yourStringForOneLetter 是要拆分的字符串变量。string.sub 将使用循环将字符串拆分为单词。

if(check==wordSize) then
    check=1
end

local wordSize = string.len(yourStringForOneLetter)
splitWord = {}

for i=check, check do
    splitWord[i] = string.sub(yourStringForOneLetter, i, i)
    check= check +1;
end
2014-03-25 06:31:34
用户1979583
用户1979583

你可以按照以下简单的方式进行操作:

local myString = "Adam"  -- 创建字符串
local positionCount = 0     -- 初始化一个变量以确定字母位置

local function displayData()
  positionCount = positionCount + 1
  if(positionCount<=string.len(myString))then
    -- 如果 positionCount 小于或等于 'myString' 中的字母个数
    local letter = string.sub(myString, positionCount, positionCount) -- 获取当前字母
    local letterLabel = display.newText(letter,20,20*positionCount,nil,20) -- 放置字母
    letterLabel.alpha = 0;
    -- 显示标签并在转换完成后更新函数
    transition.to(letterLabel,{time=1000,alpha=1,onComplete=displayData})
  end
end
displayData()

Keep Coding.................... :)

2014-03-25 08:36:44