3

此代码不是 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:在此方法中,在运行时创建 Grid Data 行并将它们相乘。

//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 计算器,并且我想获取每一行的学分,并将它们与同一行的比例值相乘,第一种方法很糟糕,因为没有抽象。

我希望使用的第二种方法,因为我希望用户添加行取决于他们的课程数量。

我希望我的英语不差。

我希望我的问题不会被否决,通过阅读这个问题,您可以确定我缺少什么,以便我学习它。

有什么教程可以用来解决我的问题吗?

4

2 回答 2

0

我现在只是解决您的第一种方法,但似乎您想要某种数组。

这是有关如何使用 Actionscript 数组的链接。

如果您需要更多维度,您可以制作一个数组数组。这将帮助您减少变量的数量。

于 2012-09-25T20:23:53.473 回答
0

我希望我正确理解了你的问题。无论哪种方式,我都会尝试...

因此,与大多数其他强类型的面向对象语言相比,actionscript 最好的事情之一就是反射是多么容易(可能要归功于它的 javascript 起源)。话虽如此,您可以做的只是使用“for”循环创建一个数组。我假设变量 row1Num1 row2Num2 等已经存在于您的班级中。否则,显然将它们存储在一个数组中并简单地将其读取到一个新数组中会更有效。无论如何,代码应该是这样的:

方法一:

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]);
}

方法二:

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);
}

希望有帮助。

于 2012-09-28T00:16:56.843 回答