我尝试做一些我认为很简单的事情,但只是在使用Titanium 5.2.2 SDK的iOS上遇到一些问题。
所以,我有一个应用程序从应用程序外部托管的JSON文件中下载Employees列表,我将所有数据缓存在板载数据库中,并为我的循环中的每个员工创建一个屏蔽的图像。
employeeImage[i] = Titanium.UI.createMaskedImage({
mask : employee_image, // background image
tint: 'black',
mode : Titanium.UI.iOS.BLEND_MODE_COLOR,
width: 210,
height: 210,
touchEnabled: false,
custom_employee_id: employee_id
});
我需要能够引用该图像并更新来自' black'的色调。对某些事情'否则'在我的应用程序的其他地方,所以我不必不断查看并刷新每个图像。
我想做这样的事情:
// get the employee status
var db = Ti.Database.open('Enter');
var getEmp = db.execute('SELECT employee_id, employee_status FROM Employee');
while (getEmp.isValidRow())
{
var empID = getEmp.fieldByName('employee_id');
var empStatus = getEmp.fieldByName('employee_status');
Ti.API.info(empID + ' ' + empStatus);
// update the images correctly
if (empStatus == 0) {
// update the image mask to black if they are now out of the building
Ti.API.info('Status is zero');
//employeeImage[i].tint = 'black';
} else {
// update the image mask to transparent if they are now in the building
Ti.API.info('Status is ONE');
//employeeImage[i].tint = 'transparent';
}
getEmp.next();
}
getEmp.close();
db.close();
问题是,我不知道如果它有动态名称,我是否可以将这些更改设置为图像视图。
如果它刚刚被称为employeeImage1,这将很容易。但是,如果我尝试调用employeeImage1而不是employeeImage [i],我会收到此错误。
"无法找到变量:employeeImage1&#34 ;;
我该如何解决这个问题?
有什么想法吗?
答案 0 :(得分:0)
毫无疑问,您可以将对象存储为数组元素。我已将您的样本缩减到以下测试用例:
(function(){
var count=10;
var i=0;
var employeeImage=[];
for (i=0;i<10;i++){
employeeImage[i]=Ti.UI.createButton({
title : "Employee " + i
});
}
for (var i=0;i<10;i++){
console.log(employeeImage[i].title);
}
})()
这是你期望的输出:
[INFO] Employee 0
[INFO] Employee 1
[INFO] Employee 2
[INFO] Employee 3
[INFO] Employee 4
[INFO] Employee 5
[INFO] Employee 6
[INFO] Employee 7
[INFO] Employee 8
[INFO] Employee 9
现在,作为数组元素,您应该将其称为employeeImage [n]而不是employeeImageN,因为employeeImageN不存在,存在的是对作为数组元素存储的对象的引用。
这是否有意义。
[R