这段代码不是java代码,我没有从ActionScript开发人员那里得到任何答案。所以我用java标记它,但Action Script类似于java,这是一个OOP问题。
我正在使用网格数据,我想完成以下任务:
方法1:我想将每一行Row1num1 * Row1num2相乘,等等,
var Row1num1:String;
var Row2num2:String;
var Row2num1:String;
var Row2num2:String;
var Row3num1:String;
var Row3num2:String;
var event1:Object={num1:Row1num1,num2:Row1num2};
var event2:Object={num1:Row2num1,num2:Row2num2};
var event3:Object={num1:Row3num1,num2:Row3num2};
then add them to a dataGrid
dataGrid.columns =["num1","num2"];
dataGrid.addItem(event1);
dataGrid.addItem(event2);
dataGrid.addItem(event3);
但是通过使用这种方法,如果我有20行,我会有很多变量,显然它很糟糕。
方法2:在此方法中,在运行时创建网格数据行并将它们相乘。
//button to add rowGrid
dd.addEventListener(MouseEvent.CLICK,ddd);
var numm:String="34";
function ddd(evt:MouseEvent):void
{
var event4:Object={num1:Rownum1,num2:Rownum2};
dataGrid.addItem(event4);
}
但是当我使用这种方法时,我很难访问每一行数据并将它们相乘。
这个例子是因为我正在创建GPA计算器,我想把每行信用小时并将它们与同一行的比例值相乘,第一种方法很糟糕,因为它没有抽象。
我希望工作的第二种方法,因为我希望用户根据课程数量添加行。
我希望我的英语不错。
我希望我的问题不会失败,通过阅读这个问题,你可以确定我所缺少的东西,这样我就可以学习它。
是否有任何可以用来解决问题的教程?
答案 0 :(得分:0)
我现在只是解决你的第一个方法,但它几乎看起来好像你想要一个类型的数组。
Here's a link on how to use Actionscript arrays.
如果您需要更多尺寸,可以创建一个数组数组。这将帮助您减少变量的数量。
答案 1 :(得分:0)
我希望我正确理解你的问题。无论如何我都会试一试......
因此,与大多数其他强类型面向对象语言相比,actionscript最好的一点是反射是多么简单(可能归功于它的javascript起源)。 话虽这么说,你可以做的只是使用“for”循环创建一个数组。我假设的是你的类中已经存在变量row1Num1 row2Num2等等。否则,显然将它们存储在一个数组中并简单地从它读入一个新数组会更有效。无论如何,代码看起来应该是这样的:
方法1:
var eventsArr:Array = [];
for(var i:int = 1; this["row" + i + "Num1"] != undefined /*or i<=length*/; i++){
eventsArr.push({num1:this["row" + i + "Num1"], num2:this["row" + i + "Num2"]});
}
for(var j:int = 0; j < eventsArr.length; j++){
dataGrid.addItem(eventsArr[j]);
}
方法2:
dd.addEventListener(MouseEvent.CLICK,ddd);
var numm:String="34"; //I am assuming this refers to the row number you wanted to add.
function ddd(evt:MouseEvent):void
{
var event4:Object={num1:this["row" + numm + "Num1"],num2:this["row" + numm + "Num2"]};
eventsArr.push(event4);
dataGrid.addItem(event4);
}
希望有所帮助。