local car={};
local car_mt = { __index=car };
function car.new(_x, _y,_color,_animation_index)
local ncar=
{
x=_x or 0;
y=_y or 0;
color=_color or 0x005500;
print(_animation_index,animation_index);
animation_index=(_animation_index or 1);
print((_animation_index or 1),animation_index);
}
return setmetatable(ncar,car_mt);
end
return car;
输出
调用car.new时未定义nil nil
1 nil
local pcar=require("car")
...
function scene:enterScene( event )
local group = self.view
physics.start();
local car1=pcar.new(200,200);
end
为什么在赋值后没有更改animation_index值?
UPD: 我无法使用rranimation_index之类的名称来设置变量。
rranimation_index=(_animation_index or 1);
rranimation_index=5;
print((_animation_index or 1),rranimation_index);
是:
1 nil
这不太可能是由已使用的全局变量名称引起的。
答案 0 :(得分:0)
在创建表格之前,所有变量都是nils。通过与vars合作解决:
local car={};
local car_mt = { __index=car };
local C=require("_const");
function car.new(_x, _y,_color,_animation_index)
local ncar=
{
x=_x or 0;
y=_y or 0;
color=_color or 0x005500;
animation_index=(_animation_index or 1);
img;
frames=0;
}
function ncar:setup()
self.img=display.newImageRect((C.CARS_DIR..C.ANIMATIONS_CARS[self.animation_index]) or C.EMPTY_IMAGE,50,120,true);
end
ncar:setup();
return setmetatable(ncar,car_mt);
end
return car;