根据变量显示或隐藏图像。

我想在特定区域根据变量显示图像。例如,当用户点击头像时,会显示特定的图像。一旦他点击其他头像,将会显示另一个图像。

我尝试删除之前的图像,并显示新的图像,但它报错“attempt to call removeself() with a nil value”。

在开始时定义表:

local item_bigsize = {}

所以我尝试这样做:

item[i] = display.newImageRect("items/"..items['pos'..i..'_name']..".png", 80 , 80)
item[i].x = holder_2[i].x+10
item[i].anchorX=0
item[i].y=holder_2[i].y
itemGroup:insert (item[i])
item[i].destination=i
item[i]:addEventListener( "touch", onSwitchPress )

并且onSwitchPress()函数的工作方式如下:

function onSwitchPress( event )

i=event.target.destination

if (event.phase=="began") then

    title_item.text=""
    desc_item.text=""

    for n=1,3 do
        if n~=i then
            item_bigsize[n]:removeSelf( )
        end
        n=n+1
    end

elseif (event.phase == "ended") then

        item_bigsize[i] = display.newImageRect("items/"..items['pos'..i..'_name']..".png", 240 , 240)
        item_bigsize[i].x = 950
        item_bigsize[i].anchorX=0
        item_bigsize[i].y=display.contentCenterY-130
        group:insert (item_bigsize[i])

    title_item.text=items['pos'..i..'_title']
    desc_item.text=items['pos'..i..'_details']

end

end
点赞
用户2653067
用户2653067
对于n=1,3的循环,如果n~=i,则执行item_bigsize[n]:removeSelf()操作。

首先为什么要手动递增n的值,for循环会自动将n递增1。因此不需要手动递增。

第一次循环时i=1,n=1,条件不满足,不会进行移除操作。

第二次循环时n递增1,但你手动将n递增1,它将变为3,条件满足,因为i变为了2并进入了循环,它将尝试移除不存在的图像item_bigsize [3]:removeSelf()。

我认为这可能是可能的错误,因此删除n = n+1。
for n=1,3 do
    if n~=i then
        item_bigsize[n]:removeSelf( )
    end
end
2014-10-18 05:39:00
用户1925928
用户1925928

你没有

item_bigsize[i]

因为 "i" 不是你想在 "for" 中迭代的整数。

2014-10-18 20:37:55
用户1979583
用户1979583

代替:

if n~=i then
  item_bigsize[n]:removeSelf( )
end

尝试:

if(n~=i and item_bigsize[n].x~=nil)then --检查对象 / 属性是否存在
  item_bigsize[n]:removeSelf()
end

继续编码.........:)

2014-10-23 15:58:46